0

私はEF4.1CodeFirstを使用しており、テーブルをリンクする必要がある多対多の関係テーブルを作成しようとしています。以下のコードの小さなスニペットを参照してください。

class Event
{
    int EventId { get; set; }
    ICollection<Contact> Contacts { get; set; }
}

class Contact
{
    int ContactId { get; set; }
    ICollection<Relation> Relations { get; set; }
}

class Relation
{
    int RelationId { get; set; }
    string Name { get; set; }
}   

したがって、Contactsオブジェクトは、「母」、「父」、「兄弟」など、さまざまなタイプの関係を持つことができます。

連絡先が参加したある種のイベントを追跡する必要がありますが、彼がイベントを主催する人とどのように関係しているかを知りたいです。それで、例えば、彼はイベンターの兄弟、父、または夫でしたか?別のイベントでは、同じ人物が現れる可能性がありますが、イベンターの義理の兄弟になります。

連絡するイベントは多対多です。連絡先との関係は1対多です。

SQLでは、リンクテーブルを作成し、そこに3つのプロパティID(EventId、ContactId、RelationId)がすべてあります。ただし、Code Firstでは、この関係をどのように表現しますか?

4

1 に答える 1

4

データベースと同じように、データベースのマッピング テーブルのような ContactEvents のようなマッピング エンティティを作成する必要があります。

class Event
{
  int EventId { get; set; }
  ICollection<ContactEvent> ContactEvents { get; set; }
}

class ContactEvent
{
  int EventId {get;set;}
  int ContactId {get;set;}
  public virtual Event Event {get; set;}
  public virtual Contact Contact {get;set;}
}

class Contact
{
   int ContactId { get; set; }
   ICollection<ContactEvent> ContactEvents { get; set; }
   ICollection<Relation> Relations { get; set; }
}

class Relation
{
  int RelationId { get; set; }
  string Name { get; set; }
  public virtual Contact Contact {get; set}
}   
于 2012-05-21T18:26:28.153 に答える