【问题标题】:EF4 code first many to many relationship to external entityEF4 代码首先与外部实体的多对多关系
【发布时间】:2012-01-08 17:29:31
【问题描述】:

问题

我有两个课程:

  • 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”不是在 输入“办公室档案”。验证它没有被明确排除 来自模型并且它是一个有效的导航属性

.

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。我希望避免创建另一个实体。您知道是否可以将 EF 配置为仅使用两个实体进行描述的行为?
    • 如果您只是将 ICollection BusinessUnitIds 添加到您的实体会怎样?然后忽略整个 BusinessUnits 集合?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    相关资源
    最近更新 更多