Я использую 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, изменилась с момента создания базы данных. Рассмотрите возможность использования Code First Migrations для обновления базы данных (http://go.microsoft.com/fwlink/?LinkId=238269).
Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.InvalidOperationException: модель, поддерживающая контекст MyContext, изменилась с момента создания базы данных. Рассмотрите возможность использования Code First Migrations для обновления базы данных (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
Как я могу предотвратить это?