如何在 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
作为一名学生,我必须使用 .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