Вот шаги, которые я прошел, чтобы перейти от проекта кода сначала с пользовательской реализацией IDatabaseInitializer, которая сбрасывает базу данных во время каждого сеанса в энергонезависимую установку БД.
Сначала скопируйте схему, сгенерированную Entity Framework, в свой dev. спроектировать, запустив следующий код и разместив вывод в доступном месте (например: файл на рабочем столе, необработанный текст в браузере и т. д.). context - это экземпляр вашего класса, который наследуется от DbContext :
((IObjectContextAdapter)context).ObjectContext.CreateDatabaseScript()
Во-вторых, сохраните строку, возвращенную из этого вызова, в файл SQL. Обязательно удалите команду, которая создает таблицу метаданных Entity Framework. Эта команда должна выглядеть следующим образом:
create table [dbo].[EdmMetadata]
(
[Id] [int] not null identity,
[ModelHash] [nvarchar](max) null,
primary key ([Id])
);
Затем удалите код, который заполняет базу данных. Я использовал AppSetting, чтобы я мог легко переключать использование этого кода после развертывания без необходимости повторной компиляции и развертывания.
if (ConfigurationManager.AppSettings["Mode"] == "Dev")
{
Database.SetInitializer<PonosContext>(new PonosInitializer());
new MyContext().Database.Initialize(true);
}
Непосредственно за пределами этого оператора вам все еще нужно инициализировать базу данных, но обязательно передать false , чтобы инициализация происходила только в том случае, если база данных не была инициализирована.
new MyContext().Database.Initialize(false);
Наконец, запустите ваш установочный SQL в пустой базе данных, чтобы таблицы были созданы с соответствующими полями.
Если вы развернете, а затем запустите свое приложение, оно должно подключиться к базе данных и иметь возможность работать в обычном режиме с любыми данными, загруженными во внешний скрипт. Я успешно проверил этот метод с пользовательскими членами и поставщиками ролей.