Я использую Entity Framework 4.3 Code First с инициализатором пользовательской базы данных следующим образом:
public class MyContext : DbContext
{
public MyContext()
{
Database.SetInitializer(new MyContextInitializer());
}
}
public class MyContextInitializer : CreateDatabaseIfNotExists<MyContext>
{
protected override void Seed(MyContext context)
{
// Add defaults to certain tables in the database
base.Seed(context);
}
}
Всякий раз, когда изменяется моя модель, я вручную изменяю свои POCO и сопоставления, и я обновляю свою базу данных вручную.
При повторном запуске приложения я получаю следующую ошибку:
Ошибка сервера в приложении "/".
Модель, поддерживающая контекст "MyContext", изменилась с момента создания базы данных. Рассмотрите возможность использования First First Migrations для обновления базы данных (http://go.microsoft.com/fwlink/?LinkId=238269).
Описание: Необработанное исключение возникло во время выполнения текущего веб-запроса. Просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.
Сведения об исключении: System.InvalidOperationException: модель, поддерживающая контекст "MyContext", изменилась с момента создания базы данных. Рассмотрите возможность использования Первых Миграций для обновления базы данных (http://go.microsoft.com/fwlink/?LinkId=238269).
Используя EFProfiler, я также замечаю выполнение этих запросов:
-- statement #1
SELECT [GroupBy1].[A1] AS [C1]
FROM (SELECT COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]) AS [GroupBy1]
-- statement #2
SELECT TOP (1) [Project1].[C1] AS [C1],
[Project1].[MigrationId] AS [MigrationId],
[Project1].[Model] AS [Model]
FROM (SELECT [Extent1].[MigrationId] AS [MigrationId],
[Extent1].[CreatedOn] AS [CreatedOn],
[Extent1].[Model] AS [Model],
1 AS [C1]
FROM [dbo].[__MigrationHistory] AS [Extent1]) AS [Project1]
ORDER BY [Project1].[CreatedOn] DESC
Как я могу предотвратить это?