2016-09-21 133 views
1

我有一个MVC 5应用程序,我第一次配置使用Mysql,但现在希望它使用SQL Server。EF代码首先到SQL Server的Mysql

我的应用程序首先使用代码和迁移来生成数据库。

后,我改变了所有必要的配置我试图运行从包管理控制台更新,数据库,但我不断收到此错误:在创建数据库后出现

System.Data.Entity.Core.MetadataException: Schema specified is not valid. Errors: (0,0) : error 0152: No Entity Framework provider found for the ADO.NET provider with invariant name 'MySql.Data.MySqlClient'. Make sure the provider is registered in the 'entityFramework' section of the application config file. See http://go.microsoft.com/fwlink/?LinkId=260882 for more information.

此错误。当我运行应用程序时,它也会出现,因为它在那个时候检查是否有任何迁移。

不知何故,即使所有提供者都指向SQL Server,它仍会尝试使用MySQL。

任何帮助将更受欢迎。

在此先感谢

+1

显然不是所有的提供者都指向SQLServer – RiggsFolly

+0

确实非常明显,我试图检查哪里可以找到和找不到。即使当我在所有解决方案文件上进行全文搜索时,我都找不到以下单词的跟踪:“Mysql” 以下是我唯一的配置文件:http://pastebin.com/FVf31aJ9 如果您发现错误提供者设置请让我知道:) – Carlos

回答

1

您需要按照下面提到的步骤来解决上述问题。

第1步:使用NuGet packageremoveinstall相关packages.This是非常重要的。

如果在上述步骤后不工作,那么您必须按照下面提到的步骤操作。

第1步:获取您的projectSQL db的备份并将其保存在安全的地方。

第2步:之后,你必须delete所有data migration scripts在您的应用程序。

第3步:也删除SQL db

第4步:重新创建所有的Migration scripts again,然后运行那些对SQL server

注:你需要做上面的步骤b'cos似乎EF保持provider detailsdb migration scripts

+0

我要去尝试这个并回到你身边。我还没有尝试重建迁移。 – Carlos

+0

我这样做,它工作正常。非常感谢!这就是说,我对这个事实感到恼火,因为我忘记了迁移的历史,因为当然,当我重新生成迁移时,它只会与数据库的当前状态一起创建一个,而在MySQL一侧,我有3个不同的迁移课程。 我试图比较新的单一迁移和其他三个mysql迁移类,唯一可能导致问题的更改是存储在目标字段中的resx文件中。我猜是有对MySql提供者的引用。 有没有一种方法... – Carlos

+0

...在保持旧的迁移类的同时只重新生成目标字段? – Carlos