.net core EF核心一对一或零关系
我有个人和地址。地址是可选的。 请参阅下面的代码.net core EF核心一对一或零关系,.net-core,entity-framework-core,ef-core-2.2,.net Core,Entity Framework Core,Ef Core 2.2,我有个人和地址。地址是可选的。 请参阅下面的代码 班级人员 { [关键] 公共int PersonID{get;set;} 公共字符串名称{get;set;} 公共广播地址{get;set;} } 班级地址 { [钥匙,外国钥匙(“人”)] 公共int PersonID{get;set;} 公共字符串City{get;set;} } 注册代码如下: modelBuilder.Entity(Entity=> { entity.HasKey(z=>z.PersonID); entity.HasOn
班级人员
{
[关键]
公共int PersonID{get;set;}
公共字符串名称{get;set;}
公共广播地址{get;set;}
}
班级地址
{
[钥匙,外国钥匙(“人”)]
公共int PersonID{get;set;}
公共字符串City{get;set;}
}
注册代码如下:
modelBuilder.Entity(Entity=>
{
entity.HasKey(z=>z.PersonID);
entity.HasOne(p=>p.Person)
.WithOne(a=>a.Address)
.HasForeignKey(a=>a.PersonId);
});
如何更改映射以使地址可选?此处
.HasForeignKey<Person>(a => a.PersonId)
这样,Person
(委托人)将有0..1地址
,地址
(受抚养人)将有1Person
(因为PersonId
既是PK又是FK)
这称为共享主键关联,是EF Core中一对零或一关系建模的标准(默认)方式
有关更多信息,请参阅。非常感谢!您能否澄清一下,此外,OP还需要在
类地址
上指定公众人物{get;set;}
否则将无法具体指定entity.HasOne(p=>p.Person)
@ttugates Nope,两个导航属性都不是必需的。如果Address
没有Person
导航属性,则流畅调用将是entity.HasOne()
.HasForeignKey<Address>(a => a.PersonId)