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.


我试过的:

  public class PhoneNumber : Entity { public long PhoneNumberId { get; set; } [InverseProperty("PersonId")] public virtual Person Person {get; set; } } 

当我执行以下代码时,这似乎不起作用:

  var realNumber = new PhoneNumber(); var person = new Person() {PhoneNumber = realNumber}; context.SaveChanges(); 

这里,PhoneNumber实体有一列Person(设置为NULL),该人有一列PhoneNumber(有值)。

这对我有用

 namespace Ef1to1 { public class TestContext : DbContext { public TestContext() : base("Data Source=127.0.0.1;database=Junk;Integrated Security=SSPI;") { } public DbSet Persons { get; set; } public DbSet PhoneNumbers { get; set; } } [Table("Person")] public class Person { [Key, Column("PersonId")] public long Id { get; set; } public virtual PhoneNumber phoneNumber { get; set; } } [Table("PhoneNumber")] public class PhoneNumber { [Key, Column("PhoneNumberId"), ForeignKey("person")] public long Id { get; set; } public virtual Person person { get; set; } } public class Program { static void Main(string[] args) { var realNumber = new PhoneNumber(); var person = new Person() { phoneNumber = realNumber }; var context = new TestContext(); context.Persons.Add(person) ; context.SaveChanges(); ; } } }