我试图建立一个双向一对一的关系。但是,我无法获得两个实体的双向设置。EF:一对一关系
例如,可以说一个人有一个电话号码,并且一个电话号码只能与一个人相关联。我会:
public class Person : Entity
{
public long PersonId { get; set; }
public virtual PhoneNumber PhoneNumber {get; set; }
}
public class PhoneNumber : Entity
{
public long PhoneNumberId { get; set; }
}
然而,这种重新安排,我不能让一个双向设置。即我不能有phoneNumber.Person.
我曾尝试:
var realNumber = new PhoneNumber();
var person = new Person() {PhoneNumber = realNumber};
context.SaveChanges();
这里,电话号码:
public class PhoneNumber : Entity
{
public long PhoneNumberId { get; set; }
[InverseProperty("PersonId")]
public virtual Person Person {get; set; }
}
这似乎并不当我执行下面的代码工作实体具有列Person(设置为NULL),并且该人员具有PhoneNumber(具有值)的列。
EF要求两个实体共享的1相同的主键:1,因此,你应该为它们命名相同(约定的目的)。 –
@MystereMan这实际上是EF中获得1:1的两种方法之一。 http://stackoverflow.com/a/10837964/176877 –
@ChrisMoschini - 咦?这两种方法都有一个共享的主键。我不明白你的观点,也不反驳我说的话。 –