我在应用程序中使用ef core 2.1,并试图将两个实体之间的关系设置为一对一关系。同时,我想在两个实体中都保留外键。假设类如下:
class Principal
{
int Id
int PropA
int PropB
int DependentId
virtual Dependent Dependent
}
class Dependent
{
int Id
int PropC
int PropD
int PrincipalId
virtual Principal Principal
}
并且使用流利的api,例如:
builder.Entity<Principal>()
.HasOne(a => a.Dependent)
.WithOne(b => b.Principal)
.HasForeignKey<Dependent>(c => c.PrincipalId);
在这种情况下,Dependent.PrincipalId
是唯一的,而Principal.DependentId
不是唯一的。我希望两者都是独一无二的。知道如何实现吗?
答案 0 :(得分:2)
在表之一(从属表)上标记其主键上的ForeignKey属性。 EF从中推断出一对一:
class Principal
{
int Id
int PropA
int PropB
//int DependentId ----> here
virtual Dependent Dependent
}
class Dependent
{
[ForeignKey("Principal")]
int PrincipalId
//int Id ----> here
int PropC
int PropD
virtual Principal Principal
}
并删除您的fluent api