[英]Initialize object in database in Entity Framework Code First
当我使用它来初始化数据库中的对象时,应用程序无法运行:
public class MiradorInitializer : DropCreateDatabaseAlways<MiradorContext>
{
protected override void Seed(MiradorContext context)
{
Client tom = new Client("Tom", "De Backer");
Booking bookingtom = new Booking("21-02-12", "05-03-12", 450);
bookingtom.Client = tom;
Client jeroen = new Client("Jeroen", "De Backer");
Booking bookingjeroen = new Booking("01-06-13", "16-09-13", 5460);
bookingjeroen.Client = jeroen;
context.Bookings.Add(bookingtom);
context.Bookings.Add(bookingjeroen);
context.SaveChanges();
}
}
但是,当我在主方法中初始化这些对象和.SaveChanges时,它确实如此。 我的初始化方法有什么问题吗?
public class Program
{
private static IEnumerable<Booking> bookings;
public static void Main(string[] args)
{
MiradorContext context = new MiradorContext();
Client tom = new Client("Tom", "De Backer");
Booking bookingtom = new Booking("21-02-12", "05-03-12", 450);
bookingtom.Client = tom;
Client jeroen = new Client("Jeroen", "De Backer");
Booking bookingjeroen = new Booking("01-06-13", "16-09-13", 5460);
bookingjeroen.Client = jeroen;
context.Bookings.Add(bookingtom);
context.Bookings.Add(bookingjeroen);
context.SaveChanges();
Console.ReadKey();
readBookings(context);
}
public static void readBookings(MiradorContext context)
{
Console.WriteLine("\n---Opvragen alle bookings---");
var bookings = from b in context.Bookings
orderby b.Client.Familienaam
select b;
foreach (Booking booking in bookings) {
Console.WriteLine(booking.Id + ": " + booking.Client.Familienaam + " " + booking.Client.Voornaam+" - Van "+booking.DatumVan+" tot "+booking.DatumTot+" voor "+booking.Prijs+" euro.");
}
Console.ReadKey();
}
}
在您的MiradorContext类构造函数中,确保您确实像这样设置了初始化程序
static MiradorContext()
{
Database.SetInitializer<MiradorContext>(new MiradorInitializer());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.