在EF中,无主且相关的一对一
本文关键字:一对一 EF | 更新日期: 2023-09-27 18:11:56
在这个问题中(实体框架中1:1关系中关联的主端是什么意思),最好的答案是:
在一对一关系中,一端必须是主端,另一端必须是从属端。主端是第一个插入的端,它可以在没有从属端的情况下存在。依赖端是必须插入到主体之后的端,因为它具有主体的外键。
我想知道,我如何在没有主体和依赖元素的实体框架中实现一对一的关系?例如:
public class Person {
public int Id {get;set;}
public string Name {get;set;}
public Person Spouse {get;set;}
}
每个人可能有也可能没有另一个配偶。如果在一对一中必须满足主元素和从属元素的存在,那么,在这个Person模型中,哪里是主元素,哪里是从属元素?
Gilad在链接中指出EF不能将一一对应的关系映射到同一个表。
但是,您可以使用下面的Code First Fluent API来模拟到同一个表的一对一关系。在底层,它们的行为和你想要的一样。public class Person
{
public Person()
{
Dependents = new List<Person>();
}
public int Id { get; set; }
public string Name { get; set; }
public int Spouse { get; set; }
public virtual ICollection<Person> Dependents { get; set; }
public virtual Person Primary { get; set; }
}
public class PersonMap : EntityTypeConfiguration<Person>
{
public PersonMap()
{
HasRequired(t => t.Primary)
.WithMany(t => t.Dependents)
.HasForeignKey(d => d.Spouse);
}
}