다른 클래스에 관계가있는 기본 클래스를 상속하는 클래스가 있습니다.EF 코드 첫 번째 추상 관계?
예 :
- 기본 클래스 : 동물
- 서브 클래스 : 1 개
- 서브 클래스 2 개 가질 수있는 예방 접종
- : 고양이
- 관련 일대 테이블 여러 예방 접종. 이것은 목록 < 백신 접종 >으로 구현됩니다.
- 고양이는 여러 번 예방 접종을받을 수 있습니다.
- 예방 접종 기록에는 오직 하나의 동물 만 연관 될 수 있습니다.
- 예방 접종은 강아지 또는 고양이와 관련이 있는지 알 수 없습니다. (개와 고양이가 비 충돌 GUID를 사용합니다.)
더 동물 테이블이 없습니다; 동물은 추상 클래스입니다. 그러나 예방 접종은 강아지에 관한 것이 아니라 동물에 대해서만 알고 있습니다. (그러나 EF는 둘 다 알고 있습니다.) Animal and Vaccination이 핵심 라이브러리에 있고 Dog가 핵심 라이브러리를 참조하는 다른 라이브러리에있는 것과 같은 클래스 라이브러리를 분할했습니다.
Entity Framework Code First를 사용하는 경우 Vaccinations 테이블에 Dog_ID (Dog 클래스의 List)라는 추가 열이 있습니다. <Vaccination> 명시 적 선언은 추론을 생성합니다. 따라서이 열은 예방 접종 기록을 개로 매핑합니다. 이 추가 열을 여러 유형의 Animal에 걸쳐 공유하려는 경우를 제외하고는 괜찮습니다. 예를 들어, Dog_ID와 Cat_ID를 가지고 있기보다는 Dog 또는 Cat에 참여할 수있는 Animal_ID를 갖고 싶습니다.
동물은 추상적이고 DB 테이블이 없기 때문에 유창한 문이나 속성/속성 선언을 사용하여이를 수행 할 수 있습니까?
"관계는 데이터베이스에서 직접 관계를 생성하는 것과 동일한 규칙을 따라야합니다." 기술적으로 SQL Server의 여러 테이블에 하나의 열을 가상 외래 키로 연결할 수 있습니다. 나는 EF CF에서 이것을 할 수 있기를 희망했다. –
기술적으로 당신은 하나의 컬럼을 다중 관계로 연관시킬 수 있지만, 휴가는 Dog, Cat 및 다른 것과 관련된 AnimalId를 가지며 한 번 "부모"테이블이 모두 같은 레코드를 가져야 함을 의미합니다. Id = 휴가는 항상 개, 고양이, 고양이와 관련된 ... –
내가 답에 제공 한 TPT 매핑이있는 링크를 확인하십시오. 그리고 동물은 여전히 추상적 일 수 있습니다. –