EF迁移的Web.config配置

时间:2012-11-03 22:09:54

标签: web-config entity-framework-5 ef-migrations

我正在我的项目上实现代码优先迁移,并希望不必在Package Manager控制台中一直使用Add-Migration和Update-Database。我希望数据库的更新能够自动发生。

出于这个原因,我更新了我的web.config文件来执行此操作。我删除了我的数据库,但出于某种原因,当我启动应用程序时,它不会创建数据库。我做错了吗?

这是我的web.config

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <contexts>
      <context type="AuctionService.DataAccess.AuctionContext, AuctionService.DataAccess">
        <databaseInitializer type="System.Data.Entity.MigrateDatabaseToLatestVersion`2[[AuctionService.DataAccess.AuctionContext, AuctionService.DataAccess], [AuctionService.DataAccess.Migrations.Configuration, AuctionService.DataAccess]], EntityFramework">
        </databaseInitializer>
      </context>
    </contexts>
  </entityFramework>

修改

我的代码在WCF服务中,当我调试此服务时,我得到了这个

  

服务器在处理请求时遇到错误。例外   消息是'无法更新数据库以匹配当前模型   因为有待处理的更改并且禁用了自动迁移。   将挂起的模型更改写入基于代码的迁移或   启用自动迁移。组   DbMigrationsConfiguration.AutomaticMigrationsEnabled为true以启用   自动迁移。'

1 个答案:

答案 0 :(得分:3)

请确保您已在true类的构造函数中将AutomaticMigrationsEnabled属性设置为AuctionService.DataAccess.Migrations.Configuration

一旦发生这种情况,如果可能存在数据丢失,您也可能会遇到异常;您可以通过将AutomaticMigrationDataLossAllowed属性设置为true来忽略此问题。

例如:

internal sealed class Configuration : DbMigrationsConfiguration<AuctionContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        // AutomaticMigrationDataLossAllowed = true; // You may want this also, but be careful.
    }
}

我不确定你是否可以在.config文件中设置它(找不到相关的文档)。

我相信当您最初设置迁移时,您可以通过运行命令Enable-Migrations –EnableAutomaticMigrations

让生成的Configuration类为您设置该属性