繁体   English   中英

EF 7 (Beta 7) 一对一关系

[英]EF 7 (Beta 7) One-to-One Relationship

我注意到一些问题已经为 EF 7 的早期测试版(如这里)回答了这个问题,但我还没有看到它为 Beta 7 解决,所以这里是:

我有 2 个实体,简化如下:

public class FirstEntity
{
    public int FirstEntityID { get; set; }
    /*
        Other fields here
    */
    public int? SecondEntityID { get; set; }
    public SecondEntity SecondEntityProperty { get; set; }
}

public class SecondEntity
{
    public int FirstEntityID { get; set; } 
    /*
        Other fields here
    */
    public FirstEntity FirstEntityProperty { get; set; }
}

映射所有内容的方式与早期版本相比发生了很大变化。 如何在一对一关系中映射这两个实体?

它已针对 EF7 rc1-final 进行了更改。

modelBuilder.Entity<FirstEntity>()
            .HasOne(q => q.SecondEntity)
            .WithMany()
            .HasForeignKey(q => q.SecondEntityID);

更新:

modelBuilder.Entity<FirstEntity>()
            .HasOne(q => q.SecondEntity)
            .WithOne(v => v.FirstEntity)
            .HasForeignKey<FirstEntity>(q => q.SecondEntityID);

Beta 7 在很大程度上依赖于使用 Fluent API 的Reference方法来处理任何类型的外键关系,这需要您首先选择 FK 关系中涉及的导航属性。 然后,由于这是一对一关系,因此您可以使用InverseReference关系指定这将应用于关系另一侧的哪个导航属性。 只有这样,您才能真正开始使用ForeignKeyPrincipalKey方法指定所涉及的键。

总而言之,这是我使用的解决方案:

modelBuilder.Entity<SecondEntity>
    .Reference(s => s.FirstEntity)
    .InverseReference(f => f.SecondEntity)
    .ForeignKey(typeof(SecondEntity), "FirstEntityID")
    .PrincipalKey(typeof(FirstEntity), "SecondEntityID");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM