C#WPF与MySql和EntityFramework

时间:2016-06-28 22:14:32

标签: c# mysql .net entity-framework

我正在尝试用C#构建一个项目,使用WPF作为我的前端,并使用EntityFramework / MySql作为我的支持,但我无法让我的代码连接到我的数据库。

我的项目结构如下:

  1. 模型
  2. 数据层框架(存储库接口,UnitOfWork接口等)
  3. 的EntityFramework / MySQL的
  4. 服务
  5. UI(我想要我的连接字符串)
  6. 我已经从Oracle安装了.NET连接器,并且我尝试了一些不同的Nuget包,但每当我的代码尝试在EntityFramework / MySq层中执行任何操作时,我都会遇到异常。

    目前我安装了以下Nuget软件包:

    1. 实体框架
    2. MySql.Data
    3. MySql.Data.Entity
    4. 我的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>
      

2 个答案:

答案 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" />