2012-03-20 2 views
0

웹 사이트의 데이터베이스에서 두 개의 테이블 (예 : Country & CountryLocale)이 있습니다.엔티티 프레임 워크에서 하나의 엔티티로 여러 테이블 매핑하기

나라 : 아이디, 경도, 위도 CountryLocale : - 나는 국가를 검색 할 때, 내가 원하는
: 내가 원하는 것은

을 CultureId 아이디, CountryId, COUNTRYNAME, 두 테이블은 다음과 같은 열이 포함 포함 할 엔터티 : CountryId, CountryName, CultureId, Latitude & 경도.
- 새 Country를 만들면 하나의 레코드를 Table Country에 삽입하고 하나는 Table CountryLocale에 삽입합니다.
- 나는 새로운 나라 로케일을 만들 때 만

등 ...

이가 달성되어 CountryLocale 내부 레코드를 만들려면? 감사

답변

1

을 원하는대로 당신이 당신의 하위 요소를 정의 할 수 있습니다. CountryLocaleCountry의 PK를 PK로 사용합니다. Country없이 CountryLocale에 삽입 할 수 없습니다. 기본적으로 단일 엔티티는 여러 테이블로 분할됩니다.

modelBuilder.Entity<Country>() 
     .Map(mc => 
     { 
      mc.Properties(n => new 
      { 
       n.Id, 
       n.Longitude, 
       n.Latitude 
      }); 
      mc.ToTable("Country"); 
     }) 
     .Map(mc => 
     { 
      mc.Properties(n => new 
      { 
       n.CountryName, 
       n.CultureId 
      }); 
      mc.ToTable("CountryLocale"); 
     }); 
+0

국가마다 여러 CountryLocale 레코드가있을 수 있으므로 CountryId는 CountryLocale의 PK가 될 수 없습니다. 위의 코드는 어디에 있습니까? 더 많은 일러스트주세요. 감사합니다 – Bill

+0

나는 그런 식으로 CodeFirst를 사용하지 않을 것입니다. 데이터베이스가 이미 있고 Entity Framework를 사용하고 있습니다. – Bill

+0

@bhaidar 그러면 분명히 속성을 단일 항목에 매핑 할 수 없습니다. 일대 다 매핑을 사용해야합니다. – Eranga

0

사용 판별 (계층 별 표)

modelBuilder.Entity<CountryBase>() 
    .Map<Country>(c => c.Requires("Type").HasValue((int)CountryType.Country)) 
    .Map<CountryLocale>(c => c.Requires("Type").HasValue((int)CountryType.CountryLocale)); 

귀하는 부분적으로 그것을 달성하기 위해 기업 분할을 사용할 수 있습니다

+0

더 많은 그림을 제공해 주시겠습니까? 감사합니다 – Bill

관련 문제