我正在我的项目上实现代码优先迁移,并希望不必在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以启用 自动迁移。'
答案 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