简体   繁体   English

首先在实体框架代码中初始化数据库中的对象

[英]Initialize object in database in Entity Framework Code First

The application does not run when I use this to initialize the objects in my DB: 当我使用它来初始化数据库中的对象时,应用程序无法运行:

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();
    }
}

But it does when I initialize these objects and .SaveChanges in my main method. 但是,当我在主方法中初始化这些对象和.SaveChanges时,它确实如此。 Is there something wrong with my approach of an initializer? 我的初始化方法有什么问题吗?

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();
    }
}

In your MiradorContext class constructor make sure you do set the initialiser like this 在您的MiradorContext类构造函数中,确保您确实像这样设置了初始化程序

static MiradorContext()
{
    Database.SetInitializer<MiradorContext>(new MiradorInitializer());
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM