EF4代码首先与外部实体有多对多的关系

时间:2011-11-29 11:04:49

标签: c# entity-framework entity-framework-4.1 ef-code-first ef4-code-only

问题

我有两节课:

  • OfficeProfile:存在于我的EF模型中
  • BusinessUnit:来自外部来源,例如网络服务

办公室资料和业务单位之间存在多对多的关系,我想在链接表OfficeProfilesBusinessUnits中表示。我不想最终得到一个BusinessUnits表,但是它包含一个业务单位列表,因为它们存储在我无法控制的外部域中。

有可能实现这个目标吗?

public class OfficeProfile
{
    public OfficeProfile()
    {
        ContactNumbers = new HashSet<ContactNumber>();
        BusinessUnits = new HashSet<BusinessUnit>();
    }

    public int OfficeProfileId { get; set; }
    public Address Address { get; set; }
    public ICollection<ContactNumber> ContactNumbers { get; private set; }
    public ICollection<BusinessUnit> BusinessUnits { get; private set; }
}

public class BusinessUnit
{
    public BusinessUnit(string code, string name, BusinessUnit parent)
    {
        Code = code;
        Name = name;
        Parent = parent;
    }

    public string Code { get; set; }
    public string Name { get; set; }
    public BusinessUnit Parent { get; set; }
}

我尝试了什么

我尝试忽略BusinessUnit实体,但省略了链接表。

我尝试忽略BusinessUnit实体,同时映射多对多关系,但是会引发InvalidOperationException陈述

  

导航属性“BusinessUnits”不是声明的属性   输入'OfficeProfile'。验证是否未明确排除它   从模型中,它是一个有效的导航属性

1 个答案:

答案 0 :(得分:0)

您可以添加一个额外的实体,该实体只有一个ID和一个指向BusinessUnit的链接。在您的实体模型中,您将忽略BusinessUnit,但添加链接实体,以便获得多对多关系链接表。