[英]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
关系指定这将应用于关系另一侧的哪个导航属性。 只有这样,您才能真正开始使用ForeignKey
和PrincipalKey
方法指定所涉及的键。
总而言之,这是我使用的解决方案:
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.