2012-03-20 15 views
0

私が取り組んでいるウェブサイトのデータベースには、たとえば、国番号& CountryLocaleという2つのテーブルがあります。二つのテーブルには、次の列が含まれています複数のテーブルをEntity Frameworkの単一のエンティティにマッピングする

国:同上、経度、緯度 CountryLocale:私が欲しいもの同上、CountryId、COUNTRYNAME、CultureId

がある:
- 私は国を取得すると、私が欲しいです含まれるエンティティ:CountryId、CountryName、CultureId、Latitude &経度。
- 新しい国を作成するときに、1つのレコードをテーブル国に挿入し、1つをテーブルCountryLocaleに挿入します。
- 私はCountryLocaleのみ

など内部のレコードを作成するには、新しい国のロケールを作成すると...

は、この達成可能ですか? おかげ

答えて

1

を好きなようにあなたのサブエンティティを定義することができます。 CountryLocaleは、そのPKとしてCountryの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

CountryIdはCountryLocaleのPKにはなりません。国ごとに複数のCountryLocaleレコードがある可能性があります。上記のコードはどこですか?もっとイラストをお願いします。ありがとう – Bill

+0

私は途中でCodeFirstを使用していません。私はデータベースが既に存在し、Entity Frameworkを使用しています。 – Bill

+0

@bhaidar次に、プロパティを単一のエンティティにマップすることはできません。 1対多のマッピングを使用する必要があります。 – 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

関連する問題