我需要做的是重新安装
MySQL for Visual Studio 2.0.5,然后完全删除并安装
MySQL Connector 6.9.9。看起来顺序很重要。之后,我完全删除了这些程序包,并按照以下确切的顺序重新安装它们:
(之后重新启动Visual Studio)
EntityFramework 6.1.3 (I tried earlier versions and they don't work, so beware)
Mysql.Data 6.9.9
Mysql.Data.Entity 6.9.9 (NOT Mysql.Data.Entities!!! [for 6.9.9])
Mysql.Web 6.9.9
然后,请确保以下内容在您的web.config文件中:
(编辑后请务必重新启动)
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
最后一步是我需要通过重新访问这里来提醒自己。
那部分是我忘记了的(时间太长了),这导致了问题截图中的错误。
最后一件事,你可能已经将不正确的版本复制到Visual Studio安装的位置;例如:
C:\Program Files (x86)\Microsoft Visual Studio\
{Year}\
{Community|Enterprise|Professional}\Common7\IDE\PrivateAssemblies
或者
C:\Program Files (x86)\Microsoft Visual Studio
{Your Version Number}\Common7\IDE\PrivateAssemblies
MySql.Data.dll
MySql.Data.Entity.EF6.dll
MySql.Web.dll
(可能需要先关闭Visual Studio)
您可以选择每个文件,并在文件属性下转到详细信息
选项卡以查看您拥有的版本。
从这里获取新文件(或任何其他安装位置):C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5
(假设使用Connector v6.9.9和框架v4.5 [请确认您的项目属性的应用程序 ->目标框架
])。
注意1:当您为Visual Studio安装MySQL时,它会更新PrivateAssemblies
文件夹中的文件(请参见上面的Visual Studio路径),因此请仔细检查上述程序集,以确保它们没有更改为任何其他版本(在这种情况下为6.9.9)。无论NuGet安装了什么,Visual Studio都不会关心,并且将查找私有程序集(我认为实际上是在启动期间)。
注意2:如果出现“IsPrimaryKey”错误,请参见此处。
我的已完成的App.Config以供参考(与您的进行比较):
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<entityFramework>
<defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
<providers>
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
</providers>
</entityFramework>
<connectionStrings>
</connectionStrings>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.9.9.0" newVersion="6.9.9.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>