一对一关系,一边没有参考属性

时间:2017-12-08 08:09:11

标签: c# entity-framework-core

我有以下构造;有地址的人(拥有者,子实体)和有国家的地址(hasone,one-to-one)

public class Person
{
     public Guid Id {get; set;}
     public string Name {get; set;}
     public Address Address {get; set;}
}

public class Address 
{
     public Guid Id {get; set;}
     public Guid CountryId {get; set;}
     public Country Country {get; set;}
}

public class Country
{
     public Guid Id {get; set;}
     public string CountryCode {get; set;}
}

public class EntityConfiguration<Person> where Person : class
{
     public void Configure(EntityBuilder<Person> builder)
     {
         builder.OwnsOne(p => p.Address, addressBuilder => 
         addressBuilder.HasOne(address => address.Country).WithOne();
     }
}

当我运行Add-Migration时,我会为每个拥有一个地址的实体获取一个代码块。使用自动生成的键等。但是我想用 HasForeignKey 明确指定关系。怎么做?

1 个答案:

答案 0 :(得分:1)

EF Core为一对一关系提供了2个流畅的API - LoadError: cannot load such file -- selenium/webdriver/phantomjs HasForeignKey

与一对多API的主要区别在于,您需要显式提供泛型类型参数,因为关系的主体和从属端不能由HasPrincipalKey / HasOne调用确定(对于一对多,一个始终是主体,许多是依赖)。在这种情况下,导航属性并不重要:

WithOne

参考:Relationships