Dan*_*ker 8 .net c# mysql entity-framework
我为Visual Studio 1.0.2下载了MySQL Connector/Net 6.7.4和MySQL,然后按照这些说明进行测试:
运行应用程序,我得到了这个例外:
ConfigurationErrorsException:无法找到或加载已注册的.Net Framework数据提供程序.
然后我将对6.7.4.0 MySql.Data
和MySql.Data.Entity
库版本6.7.4.0的引用添加到我的.NET 4.5项目中.现在当我运行应用程序时,我得到一个不同的例外:
FileLoadException:无法加载文件或程序集"MySql.Data,Version = 6.6.5.0,culture = neutral,PublicKeyToken = c5687fc88969c44d"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
请注意版本号,它不是我安装的MySQL Connector的版本.
如何让它正常工作?
Dan*_*ker 14
解决这个问题的诀窍是:
MySql.Data
和MySql.Data.Entity
库的正确版本(6.7.4.0对于.NET 4.5,在我的情况)到项目中.machine.config
您的编辑器以管理员身份运行,并取代的MySQL版本所有出现6.6.5.0
的6.7.4.0
.对于第二步,请注意有多个machine.config
文件,每个框架版本(3.0,3.5,4.0)和架构(32位,64位).另请注意,machine.config
.NET 4.5 的文件位于.NET 4.0文件夹中.您可以machine.config
在以下位置找到文件:
C:\ WINDOWS\Microsoft.NET \框架\\配置
和:
C:\ WINDOWS\Microsoft.NET\Framework64 \\配置
如果machine.config
文件中没有对MySQL的引用,则可能没有为Visual Studio安装MySQL.要么这样做,要么将以下内容添加到app.config
项目的文件中:
<system.data>
<DbProviderFactories>
<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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
但请注意,当您同时安装上述代码段MySQL for Visual Studio
并将其添加到app.config
文件中时,您将收到以下异常:
ConfigurationErrorsException:列'InvariantName'被约束为唯一.值'MySql.Data.MySqlClient'已存在.
我不喜欢编辑machine.config.只需将此重定向添加到web.config:
<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.6.5.0" newVersion="6.7.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
小智 5
使用它应该可以阻止Virtlink提到的异常:
<system.data>
<DbProviderFactories>
<remove name="MySQL Data Provider" />
<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.7.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
特别注意这一<remove name="MySQL Data Provider" />
行.