如何在 EF Core 中配置、映射一对一关系

How to configure, map One to One Relationship in EF Core

作为一名学生,我必须使用 .Net Core 设计我的第一个 WebApi。我一直在寻找两天,但没有找到解决我问题的答案。可能因为我是初学者。

我关注类:

public class Boat
{
    public int BoatId { get; set; }
    public int BoatNr { get; set; }
    public string BoatName { get; set; }

    public Location Location { get; set; }
}

public class Location
{
    public int LocationId { get; set; }
    public int Row { get; set; }
    public char Side { get; set; }
    public int Level { get; set; }

    public Boat Boat { get; set; }
}

我想配置我的数据库,这样我就可以获得所有船只的列表及其位置。但我还想要一个所有位置的列表,如果有船,是或否。

我认为这两个属性都应该是可选的。一个位置不一定拥有一条船,一条船也不一定有一个位置。

我试过:

Implementing Zero Or One to Zero Or One relationship in EF Code first by Fluent API

...但没有结果

编辑: 我想要一个 DbSet Boats 来显示我所有的船及其位置。还有一个 DbSet Locations,显示所有位置和他们的船。

试试这个:

public class Boat
{
    public int Id { get; set; }

    public int BoatNr { get; set; }
    public string BoatName { get; set; }

    public int? LocationId { get; set; }
    public virtual Location Location {get; set;}
}

public class Location
{
    public int Id{ get; set; }

    public int Row { get; set; }
    public char Side { get; set; }
    public int Level { get; set; }

    public virtual ICollection<Boat> Boats { get; set; }

    //you can use this instead of collection
    public virtual Boat Boat { get; set; }
    //but I don't recommend to do this
}

并且由于您使用的是 net core 5,因此不需要任何流畅的 API