2012-10-15 4 views
0

기존 응용 프로그램 (순수 ADO.Net 사용)을 EF 4.3 코드 우선을 사용하여 새 응용 프로그램으로 이식하려고합니다. 이것이 EF를 처음 사용하는 것에 대해 언급 할 필요가 있습니다.Entity Framework 코드 첫 번째 매핑 상황

기본적으로 공급자 테이블이 있지만 두 가지 유형의 공급 업체마다 고유 한 특성을 가진 두 개의 특수 테이블이 있습니다. 테이블이 보여으로

create table Supplier(
id_supplier int not null identity 
--Bunch of other attributes 
); 

create table Individual(
id_individual int not null --not identity, gets the same value as the Supplier table 
--Attributes specific to individuals 
); 

alter table Individual add constraint fk_individual_supplier 
foreign key(id_individual) references Supplier(id_supplier); 

create table Corporation(
id_corporation int not null --not identity, gets the same value as the Supplier table 
--Attributes specific to corporations 
); 

alter table Corporation add constraint fk_corporation_supplier 
foreign key(id_corporation) references Supplier(id_supplier); 

그래서, 공급 업체는 개인이나 기업이 될 수 있습니다 :

여기에 기존 데이터베이스의 모습입니다.

기존의 응용 프로그램은 다음과 같이이다 : 그 속성의 추가 속성을 가진 공급 업체에서

  • 클래스 개별 유도와

    • 추상 클래스 공급자
    • 의 추가 속성으로 공급 업체에서 파생
    • 클래스 공사

    Ado.Net 코드는 현재 Supplier 객체를 수신하고, 전달 된 객체가 개별 테이블에 대한 레코드를 생성합니다. 전달 된 개체가 법인 유형 인 경우 개별 유형 또는 회사 테이블

    따라서 공급 업체의 모든 레코드는 개인 또는 법인 중 하나에 일치하는 레코드를 갖습니다. 또한 Individual 및 Corporation 테이블에는 데이터베이스의 다른 테이블에 대한 외래 키가 없습니다. 대신 관계는 모두 공급자 테이블을 사용합니다. ID를 생성하는 테이블은 Supplier입니다.

    어떻게 이것을 코드 우선으로 매핑 할 수 있습니까?

    처음에 나는 내 구조를 유지하려고 생각했습니다. 내 말은, 공급자 추상적 클래스와 그로부터 파생 된 개인 및 회사입니다. Entity가 Supplier 테이블에 먼저 삽입해야하므로 (신원 필드 생성), Individual 및 Corporation 모델 클래스 모두가 Supplier 테이블에 매핑되는 것으로 보입니다.

    그러나 유형에 따라 특수화 테이블 중 하나에 추상 클래스를 삽입하고 삽입하는 것이 어떻게 가능합니까? 내 접근법이 잘못되었다고 생각하는 커스텀 SQL이 없다면 이것이 가능하지 않다고 생각한다.

    도움을 주셔서 미리 감사드립니다.

  • 답변

    0

    "테이블 당 유형"상속 (TPT)처럼 들립니다. TPT에는 모든 파생 된 유형에 공통되는 열과 유형별 열이있는 파생 유형별 테이블이있는 기본 테이블이 있습니다. Entity Framework는이 모델을 지원합니다. 데이터 주석 및 유창한 매핑 모두에서이를 수행하는 방법에 대한 예제는 this 블로그 게시물을 참조하십시오.

    +0

    내 상황이 100 %입니다. 고마워요! –

    관련 문제