Воссоздать и заполнить базу данных вне проекта MVC - PullRequest
2 голосов
/ 07 декабря 2011

Я создаю приложение MVC с кодом вначале с отдельными библиотеками классов для моего уровня Service, POCO и уровня Repository. На уровне Repository у меня есть EF-реализации моих классов IRepository, DbContext и необходимые ссылки на Entity Framework. Мой проект MVC не ссылается на EF.

Есть ли способ настроить мое решение так, чтобы база данных воссоздалась и была заполнена после смены модели? Все примеры, которые я видел до сих пор, инициализируют это в файле Global.asax проекта MVC, но мой проект MVC не зависит от EF и не имеет доступа к DbContext.

1 Ответ

1 голос
/ 08 декабря 2011

Вы можете зарегистрировать инициализатор в статическом конструкторе вашего контекста:

public class MyContext : DbContext
{
    static MyContext()
    {
        Database.SetInitializer(new MyInitializer());
    }

    //...
}

Использование производного инициализатора, который также находится в вашей библиотеке реализации репозитория:

public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
    protected override void Seed(MyContext context)
    {
        // ...
    }
}

Статический конструктор будет выполняться при создании первого экземпляра контекста, а Seed будет вызываться при запуске запроса, добавлении или присоединении объекта к контексту в первый раз и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...