EF Code First Mysql 到 SQL Server
Posted
技术标签:
【中文标题】EF Code First Mysql 到 SQL Server【英文标题】:EF Code First Mysql to SQL Server 【发布时间】:2017-01-29 01:17:01 【问题描述】:我有一个 MVC 5 应用程序,我最初配置为使用 mysql,但现在希望它使用 SQL Server。
我的应用首先使用代码和迁移来生成数据库。
更改所有必需的配置后,我尝试从包管理控制台运行更新数据库,但我不断收到此错误:
System.Data.Entity.Core.MetadataException:指定的架构不是 有效的。错误:(0,0):错误 0152:未找到实体框架提供程序 对于具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序。 确保提供者已在“entityFramework”部分注册 应用程序配置文件。看 http://go.microsoft.com/fwlink/?LinkId=260882 了解更多信息。
创建数据库后出现此错误。它也会在我运行应用程序时出现,因为它会在那时检查是否有任何迁移要做。
尽管所有提供程序都指向 SQL Server,但它仍然尝试使用 MySQL。
欢迎任何帮助。
提前致谢
【问题讨论】:
显然不是所有的提供者都指向 SQLServer 确实非常明显,以至于我试图检查它可能在哪里并且找不到。即使我对所有解决方案文件进行全文搜索,我也找不到单词的踪迹:“Mysql” 这是我唯一的配置文件:pastebin.com/FVf31aJ9 如果您发现错误的提供程序设置在哪里,请告诉我 :) 【参考方案1】:您需要按照下面提到的步骤来克服上述问题。
第1步:使用NuGet package
到remove
和install
相关包。这很重要。
如果在上述步骤后仍无法正常工作,则您必须按照以下步骤操作。
第 1 步:备份您的 project
和 SQL db
并将其保存在安全的地方。
第 2 步: 之后,您必须在您的应用程序上 delete
您所有的 data migration scripts
。
第 3 步:同时删除 SQL db
。
第 4 步: 重新创建所有 Migration scripts again
,然后针对 SQL server
运行这些。
注意:您需要执行上述步骤,因为似乎EF
保留provider details
上的db migration scripts
。
【讨论】:
我会试试这个,然后回来找你。我还没有尝试重建迁移。 我这样做了,效果很好。非常感谢!话虽如此,我对丢失迁移历史的事实感到恼火,因为当然,当我重新生成迁移时,它只会创建一个具有当前数据库状态的迁移,而在 mysql 方面,我有 3 个不同的迁移类.我尝试比较新的单一迁移和其他三个 mysql 迁移类,唯一可能导致问题的更改是已存储在目标字段的 resx 文件中。我猜有对 MySql 提供程序的引用。有没有办法... ... 只重新生成目标字段,同时保留旧的迁移类? 很高兴看到上述解决方案有效 :) 希望你能accept the solution
和 Up vote
:D to regenerate just the target field while keeping the old migration classes
- 实际上那样它不会工作。你可以在单独的项目中尝试.我很确定它在哪里不起作用。
我不得不想知道如何将其标记为正确答案,但我想通了(应该更频繁地提问:D)我正在尝试几件事,但实际上似乎无法恢复那些迁徙,很可惜。在这个项目中,它并不重要,因为它还没有投入生产,但否则这可能会变得很烦人以上是关于EF Code First Mysql 到 SQL Server的主要内容,如果未能解决你的问题,请参考以下文章
从 EF 5 Code First 迁移生成完整的 SQL 脚本