2009-03-16 3 views
0

EDMX 디자이너를 사용할 때 ADO.NET 엔터티 프레임 워크에서 다양한 테이블의 공통 열을 단일 기본 클래스로 추출 할 수있는 방법이 있습니까? 예를 들어 내 데이터베이스의 모든 단일 테이블에는 감사 용도로 필요한 "LastUpdatedBy"및 "LastUpdatedDate"열이 있습니다. 개별 엔터티 형식으로 캐스팅하지 않고 생성 된 ObjectContext의 "SavingChanges"이벤트에서이 값을 자동으로 설정하려고합니다. 이에 대한 예를 보려면 How to: Execute Business Logic When Saving Changes (Entity Framework)을 참조하십시오. 이 예제에서 엔티티로 캐스팅하는 방법을 통해 다양한 속성에 액세스 할 수 있습니다. 해당 유형의 경우 한 번만 기본 유형을 대문자로 변환 할 수 있고 속성을 설정할 수 있습니다.ADO.NET 엔터티의 일반 열

답변

0

나는 두렵다. 내가 이해하는 한, EDMX 디자이너는 각 테이블/엔티티에 대해 하나의 (부분 임에도 불구하고) 클래스를 생성 할 것이고, 공통 기본 테이블을 실제로 "주입"할 수는 없다. 믹스.

조사 할 수있는 것은 공통 데이터를 인터페이스 (ICommonData)에 넣은 다음 클래스에서 해당 인터페이스를 구현하도록하는 것입니다.

하지 :-(

마크

0

this article에서보세요하지만 당신의 EDMX 디자이너의 과정에 해당 인터페이스를 주입 할 방법을 확인합니다. 그것은 SQL에 LINQ를 위해, 그러나 쉽게 적용 할 수 있습니다 EF는 this article 라인을 따르며 첫 번째 시나리오는 모든 테이블에 필요한 감사 열이 있고 두 번째 시나리오는 전체 DB에 대해 단일 감사 테이블을 사용하여 실제로 각 변경 사항에 대해 이전 값과 새 값을 유지합니다.

둘 사이에 갇혀 있습니다. 두 번째 방법은 des는 새로 추가 된 레코드를 식별 할 수 없지만 첫 번째 레코드에는 변경 기록이 없습니다. 한 응용 프로그램에서 두 가지 감사 전략을 구현해야한다는 불편 함이 있으며 CreatedOn 값이 필요하므로 적어도 첫 번째 방법을 사용해야합니다.

BTW, XML 직렬화로 개체 상태의 기록을 저장하는 데 어색한 방법을 찾으면 AuditValues ​​세부 테이블을 사용하여 변경된 속성의 새 값을 저장하는이 EF specific solution을 볼 수 있습니다. 하나는 삽입을 전혀 감사하지 않습니다.