我要做的是重新安装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>
(您可能必须注释掉任何现有的部分并用这个替换它)
最后一步我不得不通过重新访问here 来提醒自己。
那部分是我忘记的(太长了),导致问题中的屏幕截图出现错误。
最后一件事,您可能将错误的版本复制到了 Visual Studio 的安装位置;例如:
C:\Program Files (x86)\Microsoft Visual Studio\{年}\{社区|企业|专业}\Common7\IDE\PrivateAssemblies
或
C:\Program Files (x86)\Microsoft Visual Studio {您的版本号}\Common7\IDE\PrivateAssemblies
MySql.Data.dll
MySql.Data.Entity.EF6.dll
MySql.Web.dll
(可能需要先关闭 Visual Studio)
您可以选择每个文件并转到文件属性下的Details 选项卡以查看您拥有的版本。
从此处(或您安装它的任何位置)获取新文件:
C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.9\Assemblies\v4.5
(这假定使用框架 v4.5 的连接器 v6.9.9 [查看您的项目属性的Application->Target Framework 以确认您的设置])。
注意 1:当您为 Visual Studio 安装 MySQL 时,它会更新 PrivateAssemblies 文件夹中的文件(请参阅上面的 Visual Studio 路径),因此请仔细检查上面的程序集以确保它们没有被更改为除了您的目标版本(在这种情况下为 6.9.9)之外的任何内容。无论 NuGet 安装什么,Visual Studio 都不会关心,而是会查看私有程序集(我认为实际上是在启动期间)。
注意 2:如果您收到“IsPrimaryKey”错误,see here。
我已完成的 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" />
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
</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>
<!-- Connections Strings Go Here -->
</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>