[英]Seeding database with a one-to-many relationship in ASP.NET MVC using Entity Framework
Struggling to properly seed my database when my app starts up.当我的应用程序启动时,努力正确地为我的数据库播种。
FlightId
, DepartureAirportId
, ArrivalAirportId
, FlightDateTime
and FlightDurationHours
all get added but how can I ensure the Airport
column is added. FlightId
, DepartureAirportId
, ArrivalAirportId
, FlightDateTime
和FlightDurationHours
都被添加,但我如何确保添加Airport
列。
I have set-up a one to many relationship with Entity Framework between Airport
and Flights
.我已经在
Airport
和Flights
之间建立了与实体框架的一对多关系。
The below code is inside my AddDbInitializer
class which runs at start-up.下面的代码在我的
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
}
Flight class:航班 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; }
}
Airport class:机场 class:
public class Airport
{
public int AirportId { get; set; }
public string AirportCode { get; set; }
public ICollection<Flight> Flight { get; set; }
}
Did you context.SaveChanges()
after saving the airport?保存机场后你有
context.SaveChanges()
吗?
You can add the data, but if you want to reference it for adding additional items, you need to commit it first otherwise it technically isn't there yet.您可以添加数据,但如果您想引用它来添加其他项目,您需要先提交它,否则从技术上讲它还不存在。
Airport= context.Airports.Find(3) would be null That is not the correct way to use find method from LINQ. Airport= context.Airports.Find(3) 将是 null 这不是使用 LINQ 中的查找方法的正确方法。 One way would be using lambda expression, change by context.Airports.find(x=>x.AirportId==3) Or you could the whole as a LINQ expression: var airport=select a from context.Airports where a.AirportId==3;
一种方法是使用 lambda 表达式,通过 context.Airports.find(x=>x.AirportId==3) 更改或者您可以将整体作为 LINQ 表达式:var airport=select a from context.Airports where a.AirportId= =3; new Filght(){.... Aiport=airport }
新的 Filght(){.... 机场=机场 }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.