Как переопределить Database.SetInitializer в EF 4.1 - PullRequest
2 голосов
/ 17 января 2012

Я пытаюсь заполнить базу данных с помощью первой возможности кода EF 4.1

У меня есть следующий код в моем методе Application_Start файла Global.asax

Database.SetInitializer<Context>(new DataContextInitializer());

Мой класс Context содержитвсего несколько открытых операторов DbSet.

Вот мой класс DataContextIntilializer:

public class DataContextInitializer: CreateDatabaseIfNotExists<Context>
{
    protected override void Seed(Context context)
    {

        new List<Member>{
        new Member { LastName = "Allen", FirstName = "Steve", Email = "Jeremy_Allen@Domain.com" },
        new Member { LastName = "Mickey", FirstName = "Mouse", Email = "mickey_mouse@Domain.com" },
        new Member { LastName = "Optimus", FirstName = "Prime", Email = "Optimus_Prime@Domain.com" },

   }.ForEach(m => context.Members.Add(m));

   base.Seed(context);
}

Мой метод «Защищенное переопределение void Seed» даже не вызывается.Моя реализация неверна?Я что-то упустил?

Спасибо!

1 Ответ

0 голосов
/ 17 января 2012

Создана ли ваша база данных? Как вы инициировали создание базы данных? Установка инициализатора только скажет EF, какой инициализатор он должен использовать, когда база данных необходима, но это не вызывает создание. База данных создается, как только EF сначала нуждается в этом или когда вы звоните, например:

context.Database.Initialize(false);

Также ваш инициализатор ничего не сделает, если ваша база данных уже существует. Это работает только в том случае, если база данных не существует на сервере / файловой системе базы данных.

...