实体框架自引用1到1的可选关系

本文关键字:关系 框架 自引用 实体 | 更新日期: 2023-09-27 17:59:38

所以我有一个名为Contact的表,它可以是不同的类型。我希望表格能够与自己有一个一、一个多或一个零/一的关系。这可能吗?如果是,怎么做?

例如,一个联系人可以有一个配偶,这只是数据库中的另一个联系人。联系人也可以是组织类型,在这种情况下,联系人可以与其他联系人具有一对多关系。

这就是我在域类中所做的。

public class Contact
{
  public Contact()
  {
    public int ContactId {get; set;}
    ...
    public int SpouseId {get; set;}
    public virtual Contact Spouse {get; set;}
    public in OrgId {get; set;}
    public virtual Contact Organization {get; set;}
    private ICollection<Contact> _individuals;
    public virtual ICollection<Contact> Individuals
    {
      get {return _individuals;}
      set {_individuals = value; }
    }
    ...
  }
}

我需要知道如何在上下文中的OnModelCreating()中正确映射它。如有任何帮助,我们将不胜感激。

实体框架自引用1到1的可选关系

这里有鱼腥味。如果一个组织是联系人,联系人有配偶,那么一个组织有配偶?

我想你需要一个联系人基类:

public class Contact {
   int ContactId
   ICollection<Contact> Contacts
   EntityTypeEnum EntityType
}

但转念一想,您可能想要切换到图形数据库,因为它听起来像是您描述的节点和关系。

希望能有所帮助!