5

我正在我的项目中实施 Code-First Migrations,并且不想一直在 Package Manager Console 中使用 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 以启用自动迁移。

4

1 回答 1

5

尝试确保已在类的构造函数中将AutomaticMigrationsEnabled属性设置为。trueAuctionService.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

于 2012-11-04T06:09:15.403 回答