EF семя не применяется при запуске - PullRequest
0 голосов
/ 17 декабря 2018

Мне нужно добавить несколько фиктивных данных в мою базу данных, и я хотел бы использовать Seed, как описано здесь , однако я не могу заставить его работать.Когда я запускаю Update-database, он говорит, что это метод Running Seed, но когда это сделано, в БД все равно ничего нет.Это мой код (некоторые поля сокращены)

public class AppContext : DbContext
{
    public AppContext (): base("name=DefaultConnection")
    {
        Database.SetInitializer(new DBContextInitializer()); //Used for seeding. 
    }
    public virtual DbSet<Attendee> Attendees { get; set; }  
}



 public class DBContextInitializer: CreateDatabaseIfNotExists<AppContext>
    {
        protected override void Seed(AppContext context)
        {
            var attendee = new Attendee { Id = 0, FirstName = "XXX" };
            context.Attendees.Add(attendee);
            base.Seed(context);
        }
    }

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

По-видимому, в Migratons / configuration.cs уже был определен метод Seed, но все его операторы были прокомментированы!Добавление моего собственного начального кода здесь решило проблему.

0 голосов
/ 17 декабря 2018

Вам может потребоваться передать класс AppContext DbContext в методе Database.SetInitializer.Попробуйте ниже, скомпилируйте и запустите update-database

public class AppContext : DbContext
{
    public AppContext(): base("name=DefaultConnection")
    {
        Database.SetInitializer<AppContext>(new DBContextInitializer<AppContext>()); //Used for seeding. 
    }
    public virtual DbSet<Attendee> Attendees { get; set; }  
}




public class DBContextInitializer<T> : DropCreateDatabaseAlways<AppContext>
    {
        protected override void Seed(AppContext context)
        {
            var attendee = new Attendee { Id = 0, FirstName = "XXX" };
            context.Attendees.Add(attendee);
            base.Seed(context);
        }
    }
...