Sia*_*huk 5 entity-framework-core .net-core ef-core-2.2
我有个人和地址。地址是可选的。请看下面的代码
class Person
{
[Key]
public int PersonID { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
}
class Address
{
[Key, ForeignKey("Person")]
public int PersonID { get; set; }
public string City { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
注册代码如下:
modelBuilder.Entity<Address>(entity =>
{
entity.HasKey(z => z.PersonID);
entity.HasOne(p => p.Person)
.WithOne(a => a.Address)
.HasForeignKey<Person>(a => a.PersonId);
});
Run Code Online (Sandbox Code Playgroud)
我应该如何更改映射以使地址可选?
这里
.HasForeignKey<Person>(a => a.PersonId)
Run Code Online (Sandbox Code Playgroud)
您告诉EF Person.PersonId它将是FK(外键)Address,即Person是从属的,并且引用Principal Address。
应该是相反的方式:
.HasForeignKey<Address>(a => a.PersonId)
Run Code Online (Sandbox Code Playgroud)
这样,Person(委托人)将具有0..1 Address,而Address(从属人)将具有1 Person(因为PersionIdPK和FK均是)。
这称为“ 共享主键”关联,是在EF Core中为一对一或一个关系建模的标准(默认)方法。
有关更多信息,请参见关系。
| 归档时间: |
|
| 查看次数: |
1804 次 |
| 最近记录: |