实体框架 - 代码第一关系映射

时间:2016-03-22 00:37:26

标签: c# entity-framework ef-code-first

我有一种情况,即我的EntityA应该有一个名为" PropertyB"指向EntityB的可选实例,EntityB有一个名为PropertyA的属性,指向EntityA实例 - 虽然不一定是我们开始使用的entityA的同一实例...

首先想知道如何在代码中处理这个问题?

我所看到的确切场景涉及组织成员和组织。组织成员当然是组织的成员,我通过在组织成员上指向组织的财产来建模。

与此同时,组织已提名人员作为联络点(或POC),其被建模为OrganisationMember类型的财产。

当我尝试为此创建迁移时,我被告知EF无法确定哪个是主体,哪个是依赖。

想点什么?

1 个答案:

答案 0 :(得分:1)

您的EntityAEntityB关系可以像这样实现:

public class EntityA
{
    public int Id { get; set; }

    public virtual EntityB EntityB { get; set; }
}

public class EntityB
{
    public int Id { get; set; }

    public virtual EntityA EntityA { get; set; }
}

你需要告诉Entity Framework关于这个关系:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<EntityA>()
        .HasOptional(x => x.EntityB)
        .WithOptionalDependent();

    modelBuilder.Entity<EntityB>()
        .HasOptional(x => x.EntityA)
        .WithOptionalDependent();
}