gpt4 book ai didi

sql-server - 在 SQL Azure 上的 App_Start 上运行实体代码优先迁移

转载 作者:行者123 更新时间:2023-12-04 04:34:52 26 4
gpt4 key购买 nike

我最近开始尝试移动由 Entity Framework 代码优先迁移 (EF 5) 支持的大型生产数据库。我正在使用代码优先迁移,并关闭自动迁移关闭

数据层正在 Application_Start() 内部使用以下代码进行升级:

Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Migrations.Configuration>(null));
using (var ctx = new MyDbContext()){
ctx.Database.Initialize(false);
}

使用 SQL Management studio 中的“部署到 SQL Azure”选项迁移数据库,然后将我的应用程序指向它后,我陷入了死亡循环,并出现以下错误:

Unable to update database to match the current model because there are pending changes and automatic migration is disabled. Either write the pending model changes to a code-based migration or enable automatic migration. Set DbMigrationsConfiguration.AutomaticMigrationsEnabled to true to enable automatic migration.

这是谎言! (或者工作的错误错误):-)

设置防火墙规则以允许本地 Visual Studio 实例连接并运行 update-database -verbose -script 后,我最终得到空白结果。

PM> update-database -verbose -script
Using StartUp project 'MyProject.Website'.
Using NuGet project 'MyProject.Data'.
Target database is: 'MyNewSQLAzureDB' (DataSource: tcp:xxxxxx.database.windows.net,1433, Provider: System.Data.SqlClient, Origin: Configuration).
No pending explicit migrations.

我开始发疯了。

我尝试过的事情:

  • 使用SQL Azure SQL Provider
  • 在我的本地数据库备份和 Azure 数据库备份之间进行架构比较(表结构没有变化,尽管我假设索引已更改)。
  • 升级到 EF 6,以防旧模型中进行的模型元数据比较存在差异。
  • 通过几种不同的方式在 application_start() 上进行迁移。

我认为这可能是一个错误,因为我的应用程序在移动之前已经使用相同的代码库工作了 2 年多,而且这个异常对于问题所在来说似乎很奇怪。

我认为可能发生的事情:

  • SQL Azure 迁移工具改变了我的模型中的一些小事情(向所有内容添加聚集索引。
  • EF DBMigrator 的架构比较部分将这些更改视为架构差异,但不会抛出 DbEntityValidationException,而是抛出一个没有模型差异的 AutomaticMigrationsDisabledException列在异常数据中。

大家有什么想法吗?有没有办法捕获新模型并手动更新 _migrationhistory 表,让世界再次变得快乐?

最佳答案

AutomaticMigrationsDisabledException 这里绝对是误导性的。

相信这篇文章可以帮助您解决问题。 http://www.diaryofaninja.com/blog/2013/12/05/sorrow-and-elation-ndash-why-reflection-isnt-always-your-friend

建议在服务器上运行fuslogvw ( http://msdn.microsoft.com/en-us/library/e74a18c4(v=vs.110).aspx ) 以找出您的网站难以找到哪个程序集。

这可能只是让你的 nuget 包同步的问题。

关于sql-server - 在 SQL Azure 上的 App_Start 上运行实体代码优先迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19895217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com