2011-08-04 11 views
1

Entity Frameworkの把握を始めたばかりで、シンプルエンティティのマッピング個々のテーブルが、今私は私が困惑しているより前進的なシナリオを横切って走ってきました。Entity Framework 4.1コードを使用するFirst Fluent APIを使用して2つの他のエンティティに基づく複合キーを持つエンティティを構成する

私はグループ(各イベントタイプに対して1つの好みレコードを)多くのEventTypePreferencesを持つことになり、私のモデルでは、次のPOCOS

public class Group 
{ 
    public int GroupId {get; set;} 
    public string GroupName {get; set;} 
    public virtual ICollection<EventTypePreference> Preferences {get; set;} 
} 

public class EventType 
{ 
    public int EventTypeId {get; set;} 
    public string EventTypeName {get; set;} 
    public string EventColor {get; set;} 
} 

public class EventTypePreference 
{ 
    public int GroupId {get; set;} 
    public int EventTypeId {get; set;} 

    public virtual Group Group {get; set;} 
    public virtual EventType EventType {get; set;} 
    public int EventLength {get; set;} 
} 

を持っています。 EventTypePreferencesは、対応するPOCOと同じ一致列を持つデータベース内の表です。また、データベースでは、EventTypePreferenceテーブルは、GroupIdとEventTypeIdに基づいた複合主キーを使用します。

そう... ...グループテーブルには、次の行(グループID、GroupNameのを)持っている

1, Human Resources 
2, Purchasing 
3, Information Services 

を言うとイベントタイプテーブルには、次の行(EventTypeId、EventTypeName、EventColor)を持っている

1, Training Event, Blue 
2, Sales Seminar, Red 
3, Office Party, Yellow 
(EventTypeId、グループID、EventLength)などの値を持っているでしょう

EventTypePreferences ...

1, 1, 60 
1, 2, 45 
1, 3, 60 
2, 1, 120 
......... 

私の問題は、特に私のEventTypePreferenceエンティティのためにこれらの関係を流暢に設定する方法を理解することが苦労していることです。このエンティティには多くのGroupsとEventTypesがあるので、私はそれを見ています。誰かが私のためにこれに光を当てるのを助けることができますか?

答えて

8

これを試してみてください:

modelBuilder.Entity<EventTypePreference>() 
      .HasKey(p => new { p.EventTypeId, p.GroupId }); 

modelBuilder.Entity<EventTypePreference>() 
      .HasRequired(p => p.EventType) 
      .WithMany() 
      .HasForeignKey(p => p.EventTypeId); 

modelBuilder.Entity<EventTypePreference>() 
      .HasRequired(p => p.Group) 
      .WithMany(g => g.Preferences) 
      .HasForeignKey(p => p.GroupId); 
関連する問題