EF Core一对关系,两边都是可选的,但有一个属性不可为空



我有一个模型,看起来像这样:

public class Foo
{
public long Id { get; set; }
public long? BarId { get; set; }
public virtual Bar? Bar { get; set; }
}
public class Bar
{
public long Id { get; set; }
public virtual Foo? Foo { get; set;}

// This would be easy, but I want a one to one relation
// public virtual ICollection<Foo> Foos { get; set; } = new HashSet<Foo>();
}

我现在要配置一个一对一的关系。棘手的部分是Bar.Id可能具有Foo.BarId列中不存在的值。

所以这一定是可能的

Foo

<表类>IdBarIdtbody><<tr>132空

试试这个

public class Foo
{
[Key]
public long Id { get; set; }
public long? BarId { get; set; }
[ForeignKey(nameof(BarId))]
[InverseProperty("Foo")]
public virtual Bar Bar { get; set; }
}
public class Bar
{
[Key]
public long Id { get; set; }
[InverseProperty("Bar")]
public virtual Foo Foo { get; set;}
}

但是如果你使用net5+,你可能不需要任何属性或流畅的api

最新更新