2011-12-13 13 views
0

Entity Frameworkコードファーストで次のマッピングを行うことは可能ですか?Entity Frameworkコード部分キーを使用した最初のカスタムマッピング

public class Parent 
{ 
    [Key] 
    public int ID {get; set;} 
    public string statecode{get; set;} 

    public virtual ICollection<Child> children{get; set;} 
} 

public class Child 
{ 
    [Key, Column(Order = 0)] 
    public string StateFromCode { get; set; } 
    [Key, Column(Order = 1)] 
    public string StateToCode { get; set; } 
} 

私は、子どもたちが親とParent.statecode == Child.StateToCodeにロード怠惰です、私のdbcontextで関係を指定したいと思います。 StateToCodeはChildキーの一部であり、主キー全体ではありません。可能ならば、これを実現させるために、以下の私のDBコンテキストで何を指定すべきですか?

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 
     modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); 
     modelBuilder.Entity<Parent>().HasMany(x=>x.children).............. 

    } 

答えて

2

特に、リレーションがデータベース内の参照制約を指定するのとまったく同じルールに従う必要があります。したがって、唯一の有効な関係は、のID列がChildテーブルにあり、この列の外部制約が必要です。

+0

お返事ありがとうございます。私は手動で 'p.children = dbcontext.Children.where(c => c.StateToCode == p.statecode)'として子コレクションを移入して終了し、コレクションをICollection から[NotMapped] IEnumerable に変更しました。 – lorenc

+0

このままでも、新しいバージョンでこの機能を利用できるようになっていますか? –

関連する問題