【问题标题】:MySQL Entity Framework 'System.InvalidOperationException'MySQL 实体框架'System.InvalidOperationException'
【发布时间】:2016-07-18 11:23:32
【问题描述】:

我在 AWS RDS 中有 MySQL,我想通过 C# Entity Framework 访问它。 我已经安装了 MySQL Visual Studio 插件http://dev.mysql.com/downloads/file/?id=461390

在一些项目上做过'Right Click' -> 'Entity Framework' -> 'Reverse Engineer Code First'

放置数据库凭据后,模型已创建,包括 app.config

app.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="algoventurelab_db1Context" connectionString="####"
      providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
  </startup>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

我现在尝试使用以下代码查询数据库:

using System;
using System.Linq;
using Test3.Models;

namespace Test3
{
    class Program
    {
        static void Main(string[] args)
        {
            using (var context = new algoventurelab_db1Context())
            {
                var query = (from c in context.Daily25Data
                    where c.Date == DateTime.UtcNow
                    select c).SingleOrDefault();

                Console.WriteLine(query);
            }
        }
    }
}

但是当我尝试运行时出现异常:

“System.InvalidOperationException”类型的未处理异常 发生在EntityFramework.dll中

附加信息:未找到适用于 具有不变名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序。制作 确保提供者在 'entityFramework' 部分中注册 应用程序配置文件。看 http://go.microsoft.com/fwlink/?LinkId=260882 了解更多信息。

似乎是什么问题?

【问题讨论】:

    标签: c# mysql entity-framework


    【解决方案1】:

    在 entityFramework\providers 部分,在 SqlClient 提供程序之后添加

        <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
    

    【讨论】:

    • 当我添加它时,我在 ADO.NET 提供程序的应用程序配置文件中注册了“MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity”,其名称不变为“MySql.Data” .MySqlClient' 无法加载。确保使用程序集限定名称并且程序集可用于正在运行的应用程序。请参阅go.microsoft.com/fwlink/?LinkId=260882 了解更多信息。'
    • MySQL dll 是否在输出目录中?
    • 试图复制,我猜这意味着'MySql.Data.dll'仍然无法正常工作
    • 可能你错过了 mysql 的 EF 提供程序。名称应为 MySql.Data.Entities。你可以在 NuGet 上找到它。您可能还需要最新的 ADO.Net 提供程序(也来自 NuGet)。在安装之前删除我之前建议的行。
    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 2017-07-07
    • 2020-08-12
    • 2018-03-03
    • 2014-04-04
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多