C# 在配置中找不到提供程序或出现无效错误

C# 在配置中找不到提供程序或出现无效错误,c#,mysql,entity-framework,C#,Mysql,Entity Framework,我将EF6.0与MySql结合使用。我使用EF的model builder向导构建实体模型,并且没有对我的应用程序生成的配置文件进行自定义编辑。我的应用程序在我的计算机上运行良好,但当我尝试在任何其他计算机上安装它时,会出现两个错误: 错误1:“在配置中找不到指定的存储提供程序或该提供程序无效” 错误2:“在配置中找不到指定的命名连接,该连接对指定的EntityClient无效,或者无效” 我想如果我解决了错误1,错误2可能会消失。我对配置文件一无所知,所以我发布了自动生成的app.config

我将EF6.0与MySql结合使用。我使用EF的model builder向导构建实体模型,并且没有对我的应用程序生成的配置文件进行自定义编辑。我的应用程序在我的计算机上运行良好,但当我尝试在任何其他计算机上安装它时,会出现两个错误:

错误1:“在配置中找不到指定的存储提供程序或该提供程序无效”
错误2:“在配置中找不到指定的命名连接,该连接对指定的EntityClient无效,或者无效”

我想如果我解决了错误1,错误2可能会消失。我对配置文件一无所知,所以我发布了自动生成的app.config的内容:


我注意到
providers
start标记下面有一条蓝色的曲线。下面是自动生成的
packages.config
的内容(不确定这是做什么用的):



在这篇文章中,
packages
start标签下面有一条蓝色的曲线。

Pawel,你的博客是我的“出发点”。如果你的评论被贴出来,我会把它标记为“答案”。相反,我是在“回答”我自己的问题。。。不过谢谢你的帮助

为了解决我的问题:

1) 我返回EF5。
2) 我回滚到MySql连接器5.6
3) 多亏了Pawel的建议,我进行了以下编辑:

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

默认情况下,出于某种原因,此文本引用SqlServer。我在网上找到一些提要,表明这可能是一个bug。

4) 我在部分添加了以下内容:

<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider"
           invariant="MySql.Data.MySqlClient"
           description=".Net Framework Data Provider for MySQL"
           type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>

我的最终app.config文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.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>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <connectionStrings>
    <add name="prismatic_dbEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=pmuser;password=pmuser;persist security info=True;database=prismatic_db&quot;" providerName="MySql.Data.MySqlClient" />
    <add name="prismatic_dbPrivileges" connectionString="metadata=res://*/PMConfigPrivilegesModel.csdl|res://*/PMConfigPrivilegesModel.ssdl|res://*/PMConfigPrivilegesModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=pmuser;password=pmuser;persist security info=True;database=prismatic_db&quot;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
    <add name="MySQL Data Provider"
       invariant="MySql.Data.MySqlClient"
       description=".Net Framework Data Provider for MySQL"
       type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

  <entityFramework>
     <providers>
      <provider invariantName="MySql.Data.MySqlClient"
            type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
    </providers>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity">
      <parameters>
        <parameter value="v11.0" />
      </parameters>      
    </defaultConnectionFactory>

  </entityFramework>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
       </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>


我不能确定是否有必要回滚EF和MySql连接器。我将尝试尽快回到这两个版本的最新版本。我会在发布结果时发布。另外,如果其他人也有类似的问题,并且使用最新版本的connector和EF(目前为EF6和MySql connector 5.7)成功解决了这些问题,请发布您的结果。谢谢,伙计们

Pawel,你的博客是我的“出发点”。如果你的评论被贴出来,我会把它标记为“答案”。相反,我是在“回答”我自己的问题。。。不过谢谢你的帮助

为了解决我的问题:

1) 我返回EF5。
2) 我回滚到MySql连接器5.6
3) 多亏了Pawel的建议,我进行了以下编辑:

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

默认情况下,出于某种原因,此文本引用SqlServer。我在网上找到一些提要,表明这可能是一个bug。

4) 我在部分添加了以下内容:

<system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider"
           invariant="MySql.Data.MySqlClient"
           description=".Net Framework Data Provider for MySQL"
           type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>

我的最终app.config文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.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>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <connectionStrings>
    <add name="prismatic_dbEntities" connectionString="metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=pmuser;password=pmuser;persist security info=True;database=prismatic_db&quot;" providerName="MySql.Data.MySqlClient" />
    <add name="prismatic_dbPrivileges" connectionString="metadata=res://*/PMConfigPrivilegesModel.csdl|res://*/PMConfigPrivilegesModel.ssdl|res://*/PMConfigPrivilegesModel.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=localhost;user id=pmuser;password=pmuser;persist security info=True;database=prismatic_db&quot;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
    <add name="MySQL Data Provider"
       invariant="MySql.Data.MySqlClient"
       description=".Net Framework Data Provider for MySQL"
       type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

  <entityFramework>
     <providers>
      <provider invariantName="MySql.Data.MySqlClient"
            type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity" />
    </providers>
    <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity">
      <parameters>
        <parameter value="v11.0" />
      </parameters>      
    </defaultConnectionFactory>

  </entityFramework>

  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
       <dependentAssembly>
        <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
       </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>


我不能确定是否有必要回滚EF和MySql连接器。我将尝试尽快回到这两个版本的最新版本。我会在发布结果时发布。另外,如果其他人也有类似的问题,并且使用最新版本的connector和EF(目前为EF6和MySql connector 5.7)成功解决了这些问题,请发布您的结果。谢谢,伙计们

在提供者部分,您有
谢谢。。很抱歉迟了答复。只要读你的帖子-有趣的阅读。我已经在下面发布了我的最终修复:在提供者部分,您有
谢谢。。很抱歉迟了答复。只要读你的帖子-有趣的阅读。我已经在下面发布了我的最终修复:从那以后有什么更新吗?几年后,在MySQL连接器和EF6.03上遇到了同样的问题,但我只是在看我以前的帖子。天啊,我当时太无知了!甚至不知道我的Nuget包配置文件是什么。但是,对于那些仍在搜索的人来说:首先,了解配置部分及其功能。在EOD中,EF根据对象的值构建一组对象。这些OBJ是db连接类型的对象,每个db供应商通过实现DBCommand、DBReader、DBConnectionFactory和DBProviderFactory等接口来构建这些对象。阅读以下内容:Codeplex页面已消失:(.我如何自动添加
提供程序
标记?噢!Codeplex终于消失了。当你说自动..你的意思是什么?大多数主要的提供程序会在你将其EF Nuget包添加到项目时自动为你添加提供程序配置设置。你想自动设置配置设置吗?你正在构建own提供程序并将其推送到Nuget?如果是的话,请阅读以下两篇文章:从那以后有什么更新吗?在MySQL connector和EF6.03年后遇到了同样的问题,但我只是在看我以前的帖子。天哪,我当时太无知了!甚至不知道我的Nuget包配置文件是什么。但是,对于那些仍在搜索的人来说:首先,在站在配置部分和它们的作用下。在EOD,EF根据它们的值构建一组对象。这些OBJ是db连接类型的对象,每个db供应商通过实现DBCommand、DBReader、DBConnectionFactory和DBProviderFactory等接口来构建。请阅读:Codeplex页面已消失:(.我如何自动添加
提供程序
标记?噢!Codeplex终于消失了。当你说自动..你是什么意思?大多数主要的提供程序在你添加其EF Nuget时会自动为你添加提供程序配置设置。)