0

我正在使用 EF4.1 Code First 并尝试创建一些需要链接表的多对多关系表。请看下面的一小段代码:

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对象可以有很多不同类型的Relationship,比如“Mother”、“Father”、“Brother”等。

我需要跟踪联系人参加的某种活动,但我想知道他与举办活动的人有什么关系。例如,他是事件者的兄弟、父亲还是丈夫?在另一个事件中,同一个人可能会出现,但会是事件者的姐夫。

Event to Contact 是多对多的;与联系的关系是一对多的。

在 SQL 中,我们只需要创建一个链接表,并在其中包含所有三个属性 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 回答