[英]ASP.NET Entity Framework 6 - not seeding data with classes that have a one to many relationship
[英]Seeding database with a one-to-many relationship in ASP.NET MVC using Entity Framework
当我的应用程序启动时,努力正确地为我的数据库播种。 FlightId
, DepartureAirportId
, ArrivalAirportId
, FlightDateTime
和FlightDurationHours
都被添加,但我如何确保添加Airport
列。
我已经在Airport
和Flights
之间建立了与实体框架的一对多关系。
下面的代码在我的AddDbInitializer
class 中,它在启动时运行。
new Flight()
{
DepartureAirportId = 3,
ArrivalAirportId = 7,
FlightDateTime = new DateTime(2021, 12, 21, 08, 0, 0, 0),
FlightDurationHours = 2,
Airport = context.Airports.Find(3) // ADDED THIS LINE BUT IT DOESN'T WORK
}
航班 class:
public class Flight
{
public int FlightId { get; set; }
public int DepartureAirportId { get; set; }
public int ArrivalAirportId { get; set; }
public DateTime FlightDateTime { get; set; }
public int FlightDurationHours { get; set; }
public Airport Airport { get; set; }
}
机场 class:
public class Airport
{
public int AirportId { get; set; }
public string AirportCode { get; set; }
public ICollection<Flight> Flight { get; set; }
}
保存机场后你有context.SaveChanges()
吗?
您可以添加数据,但如果您想引用它来添加其他项目,您需要先提交它,否则从技术上讲它还不存在。
Airport= context.Airports.Find(3) 将是 null 这不是使用 LINQ 中的查找方法的正确方法。 一种方法是使用 lambda 表达式,通过 context.Airports.find(x=>x.AirportId==3) 更改或者您可以将整体作为 LINQ 表达式:var airport=select a from context.Airports where a.AirportId= =3; 新的 Filght(){.... 机场=机场 }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.