我有一个模型,看起来像这样:
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
<表类>Id BarId tbody><<tr>1 3 2空 表类>
试试这个
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