我首先使用ef4.1代码,我正在尝试创建一些多对多的关系表,其中需要链接表。请参阅Code Beloow的小片段:

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; }
}   
. 所以联系人对象可以有许多不同类型的关系,例如“母亲”,“父亲”,“兄弟”等。

我需要跟踪联系人的某种活动,但我想知道他是如何与托管活动的人有关。例如,他是最终的兄弟,父亲还是丈夫?在另一个活动中,同一个人可以出现,但是是最终的姐夫。

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

在SQL中,我们只会制作一个链接表,并拥有那里的所有三个属性ID(EventId,Conftid,RelationID);但是,在代码中,如何代表这种关系?

有帮助吗?

解决方案

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

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}
}   
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top