2010-12-09 6 views
1

내가 법인 응용 프로그램을 만들고 있다고 가정 해 봅시다. 엔티티 중 하나는 Employees이고 HR 부서에는 여기에 저장된 기본 직원 데이터가 있습니다. 그런 다음 영업 팀이 들어가기를 원하며 그 작업은 다른 어셈블리에 배치됩니다. 이제 SalesPerson조차도 직원이므로 Employee 엔티티를 상속하는 것이 합리적입니다.하지만 그 작업을 수행하는 방법을 모르겠습니다 ...다른 어셈블리의 EF4 엔티티 사이의 상속

내가 아는 모든 것에 대해 여러 엔티티 컨텍스트를 사용하는 것은 좋지 않은 생각 일 수 있습니까? 나는 제안을 위해 열었습니다 ... :)

답변

1

예, POCO 엔티티를 다른 어셈블리에 배치 할 수 있으며 이러한 엔티티 상단에 상속을 구축 할 수 있지만 여전히 이러한 모든 엔티티를 포함하는 단일 ObjectContext 및 EDMX 매핑 파일이 필요합니다. 상속 모델을 여러 매핑 파일로 분할 할 수 없습니다.

IMO 유일한 방법은 다른 모듈에 대한 EDMX 파일간에 일부 매핑을 복제하는 것입니다. 예를 들어, HR 모듈에는 Employee 매핑과 EDMX가 있고 Sales 모듈에는 동일한 Employee 매핑과 Sales Person 매핑을 상속받은 자체 EDMX가 있습니다.

+0

저는이 솔루션을 정말로 원하지 않지만 다른 가능한 솔루션이 부족하여 여러분의 대답을 답으로 표시 할 것입니다. – rozon

1

기본 EF 코드 생성으로는 가능하지만 할 수는 있습니다.

POCO 's를 사용해야합니다.

우리는 우리의 POCO를 별도의 어셈블리에도 가지고 있습니다.

EF4로 POCO를 읽으십시오. T4 템플릿을 사용하여 클래스를 생성 한 다음이 코드를 다른 어셈블리의 개별 파일에 복사하여 붙여 넣을 수 있습니다 (T4가 파일 당 파일 생성을 지원하지 않는 이유는 알 수 없습니다).

EF 프로젝트에서 POCO 어셈블리에 대한 참조를 추가하면 EF는 POCO를 사용하기 위해 규칙 기반 매핑을 사용합니다.

분할 어셈블리에서 작동하는 경우 100 % 확실하지 않습니다. 어셈블리의 네임 스페이스가 다른 경우 문제가 발생할 수 있습니다. (그들이 될 것이다).

가치가 있습니다. 먼저 POCO 매핑을 사용하여 1 개의 어셈블리를 사용하고, 작동하는지 확인한 다음 어셈블리를 분할하고 거기에서 이동하십시오.

Godspeed. :)

+0

T4 템플릿은 엔티티마다 파일을 생성 할 수 있습니다. 나는 아무것도 변경하지 않았으며 간단하게 작동합니다. 템플릿을 약간 수정하면 (edmx에 대한 경로 설정) 다른 어셈블리에 배치 할 수도 있고 코드를 생성 할 수 있지만 코드 생성을 수동으로 트리거해야합니다. –

+0

재미있는 - 팁 주셔서 감사합니다! – RPM1984

관련 문제