EntityFramework Mutli-Table多对多

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

class Event { int EventId { get; set; } ICollection Contacts { get; set; } } class Contact { int ContactId { get; set; } ICollection Relations { get; set; } } class Relation { int RelationId { get; set; } string Name { get; set; } } 

因此,Contacts对象可以有许多不同类型的关系,例如“Mother”,“Father”,“Brother”等。

我需要跟踪联系人参加的某种活动,但我想知道他是如何与举办活动的人联系的。 例如,他是Eventer的兄弟,父亲还是丈夫? 在另一个事件中,同一个人可以出现,但成为Eventer的兄弟。

联系活动是多对多的; 与联系人的关系是一对多的。

在SQL中,我们只创建一个链接表,并在那里拥有所有三个属性Id(EventId,ContactId,RelationId); 但是,在Code First中, 您如何表达这种关系?

与数据库相同,您必须创建一个映射实体,就像ContactEvents一样,如数据库中的映射表。

 class Event { int EventId { get; set; } ICollection 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 ContactEvents { get; set; } ICollection Relations { get; set; } } class Relation { int RelationId { get; set; } string Name { get; set; } public virtual Contact Contact {get; set} }