【问题标题】:C# WPF with MySql and EntityFramework带有 MySql 和 EntityFramework 的 C# WPF
【发布时间】:2016-06-28 22:14:32
【问题描述】:

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

我的项目结构如下:

  1. 型号
  2. 数据层框架(存储库接口、UnitOfWork 接口等)
  3. EntityFramework/MySql
  4. 服务
  5. UI(我想要我的连接字符串)

我已经从 Oracle 安装了 .NET 连接器,并且我尝试了一堆不同的 Nuget 包,但是每当我的代码尝试在 EntityFramework/MySq 层中执行任何操作时,我都会遇到异常。

目前我安装了以下 Nuget 包:

  1. 实体框架
  2. MySql.Data
  3. MySql.Data.Entity

我的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, 版本=6.9.8.0,文化=中性,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>

【问题讨论】:

  • 您能在问题中包含您的 packages.config 吗?

标签: c# mysql .net entity-framework


【解决方案1】:

看起来你可能有错误版本的 MySql 你的包/引用。尝试在包管理器控制台中运行它(工具 > Nuget 包管理器 > 包管理器控制台):

 Uninstall-Package MySql.Data

 Install-Package MySql.Data -version 6.9.8

PS:你可能需要运行Uninstall-Package MySql -force

【讨论】:

  • 我之前看到过类似的答案,但是当我在我的 EntityFramework/MySql 项目上运行Install-Package MySql -version 6.9.8 时,它给了我这个错误Install-Package : Unable to find version '6.9.8' of package 'MySql'
  • @amura.cxg 抱歉,我忘记了“.Data”,请查看更新后的答案
  • 试了一下,这次安装了,但我仍然收到错误消息。我想知道我的app.config 在尝试了这么多事情之后是不是格式错误
【解决方案2】:

尝试将配置文件的行更改为:

<bindingRedirect oldVersion="0.0.0.0-6.7.2.0" newVersion="6.7.2.0" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-29
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多