Sql server 在SQL Azure上启动应用程序上运行实体代码首次迁移
我最近开始尝试移动一个由实体框架代码优先迁移(EF5)支持的大型生产数据库。我使用的是代码优先迁移,自动迁移已关闭 数据层在Sql server 在SQL Azure上启动应用程序上运行实体代码首次迁移,sql-server,entity-framework,azure,azure-sql-database,entity-framework-migrations,Sql Server,Entity Framework,Azure,Azure Sql Database,Entity Framework Migrations,我最近开始尝试移动一个由实体框架代码优先迁移(EF5)支持的大型生产数据库。我使用的是代码优先迁移,自动迁移已关闭 数据层在应用程序\u Start()内部进行升级,使用的内容如下: Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Migrations.Configuration>(null)); using (var ctx = new MyDbContext()){ ctx.D
应用程序\u Start()
内部进行升级,使用的内容如下:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, Migrations.Configuration>(null));
using (var ctx = new MyDbContext()){
ctx.Database.Initialize(false);
}
我开始发疯了
我尝试过的事情:
- 使用
- 在本地数据库备份和Azure数据库备份之间进行模式比较(表结构没有变化,尽管我假设索引已经改变)
- 升级到EF 6,以防在旧模型中进行的模型元数据比较存在差异
- 在
上执行迁移有几种不同的方法应用程序\u start()
- SQLAzure迁移工具改变了我的模型中的一些小事情(向所有内容添加聚集索引)
- EF DBMigrator的模式比较部分将这些更改视为模式中的差异,但它不是抛出一个
,而是抛出一个DbEntityValidationException
,在异常数据中没有列出任何模型差异AutomaticMigrationsDisableException
有人有什么想法吗?有没有办法捕获新模型并手动更新
\u migrationhistory
表,使世界再次成为一个快乐的地方?自动迁移禁用异常在这里肯定是误导性的
我相信这篇文章可能会帮助你解决这个问题
建议在服务器上运行fuslogvw(),以找出您的网站难以找到的程序集
这可能只是让您的nuget软件包同步的问题。造成这种情况的实际原因是我的数据层中缺少依赖项
我的实体框架域POCO在某些属性上具有Json.Net属性
由于属性是使用反射运行的,并且以静默方式失败,因此引发的异常与最终结果无关
正如Alex在回复中提到的那样,我在博客中讲述了解决这个问题的过程:
正如他在评论中所说,解决这一问题的方法应该是打开Fusion日志。不幸的是,当时常量自动迁移DisabledException
一直让我在一个完全不同的地方搜索
这个故事的寓意可能是:在搜索问题时遇到死角时,添加fusion日志作为贯穿步骤。您是否尝试过“添加迁移-m”foo“要查看差异吗?我查看了。如果您阅读了我的回复,您可以看到powershell在DB和模型之间没有任何差异。我在EntityFramework 6.0.1中遇到问题…我回滚到了“6.0.0-rc1”使用以下命令:Install Package EntityFramework-Version 6.0.0-rc1-Pre,它会再次工作。这听起来可能很奇怪,但我也会尝试一下。首先,以这种方式更新生产数据库有点危险,我不推荐这样做。除此之外,可能是u MigrationHistory表没有正确部署到Azure数据库,因此检查架构和内容是否与本地相同。如果不是这样,我建议使用EdmxWriter类获取本地运行的模型和针对SQL Azure运行的模型。如果它们不同,则应提供线索。您是否建议人们不应先将代码迁移到Azure SQL?或者人们应该修改_MigrationHistory表。我已经做了sql数据比较和sql架构比较。两者在visual studio中都是相同的(还没有尝试sql比较)。嗨,Alex-感谢链接。有趣的是,这实际上是我关于查找解决方案的博文:-)问:你在Azure中解决了这个问题吗?如果是的话,它是一个网络角色吗?如果是这样,您是能够在服务器上找到fuslogvw.exe,还是自己安装的?
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.