我正在尝试用C#构建一个项目,使用WPF作为我的前端,并使用EntityFramework / MySql作为我的支持,但我无法让我的代码连接到我的数据库。
我的项目结构如下:
我已经从Oracle安装了.NET连接器,并且我尝试了一些不同的Nuget包,但每当我的代码尝试在EntityFramework / MySq层中执行任何操作时,我都会遇到异常。
目前我安装了以下Nuget软件包:
我的EntityFramework / MySq图层中的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>
<providers>
<provider invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity"/>
</providers>
</entityFramework>
<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.8.0" newVersion="6.9.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient"></remove>
<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.2.0"/>
</DbProviderFactories>
</system.data>
</configuration>
我的UI层中的app.config如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="VolunteerDb" connectionString="server=localhost;user id=root;password=mypass;database=mydb" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<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.8.0" newVersion="6.9.8.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
当我尝试运行并访问我的存储库中的数据库时,我得到以下异常:
其他信息:无法加载文件或程序集'MySql.Data, Version = 6.9.8.0,Culture = neutral,PublicKeyToken = c5687fc88969c44d'或 其中一个依赖项。定位程序集的清单定义 与程序集引用不匹配
我需要做什么才能让EntityFramework与MySql一起使用?任何有关这方面的帮助将不胜感激!
修改
这是packages.config的样子:
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="EntityFramework" version="6.1.3" targetFramework="net45" />
<package id="Google.ProtocolBuffers" version="2.4.1.555" targetFramework="net45" />
<package id="MySql.Data" version="7.0.2-DMR" targetFramework="net45" />
<package id="MySql.Data.Entity" version="7.0.2-DMR" targetFramework="net45" />
</packages>
答案 0 :(得分:0)
看起来你可能你的包/引用有错误版本的MySql。尝试在软件包管理器控制台(工具&gt; Nuget软件包管理器&gt;软件包管理器控制台)中运行它:
Uninstall-Package MySql.Data
Install-Package MySql.Data -version 6.9.8
PS:您可能需要运行Uninstall-Package MySql -force
答案 1 :(得分:0)
Try to change the lines of your config files to:
<bindingRedirect oldVersion="0.0.0.0-6.7.2.0" newVersion="6.7.2.0" />