我使用实体框架4.3的代码先用这样的自定义数据库初始化:
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”语境已经改变,因为该数据库已创建。 考虑使用代码首先迁移到更新数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
说明:在当前Web请求的执行过程中发生未处理的异常。 请检查堆栈跟踪有关该错误它起源于代码的详细信息和。
异常详细信息: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
我怎样才能避免这种情况?