Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用MySql连接字符串的实体框架错误_C#_Mysql_Entity Framework - Fatal编程技术网

C# 使用MySql连接字符串的实体框架错误

C# 使用MySql连接字符串的实体框架错误,c#,mysql,entity-framework,C#,Mysql,Entity Framework,我正在使用entity framework在cmd中开发一个应用程序进行研究,我正在使用MySql数据库,该数据库已经创建并连接到visual studio,但我无法打开应用程序,该应用程序目前很简单,下面是应用程序代码和错误: RdiContext.cs using rdi_musica.core; using System.Data.Entity; namespace rdi_musica.infra { public class RdiContext : DbContext

我正在使用entity framework在cmd中开发一个应用程序进行研究,我正在使用MySql数据库,该数据库已经创建并连接到visual studio,但我无法打开应用程序,该应用程序目前很简单,下面是应用程序代码和错误:

RdiContext.cs

using rdi_musica.core;
using System.Data.Entity;

namespace rdi_musica.infra
{
   public class RdiContext : DbContext
   {
       public DbSet<Usuario> Usuarios { get; set; }
       public DbSet<Genero> Generos { get; set; }
       public DbSet<Banda> Bandas { get; set; }
       public DbSet<Musica> Musicas { get; set; }

   }
}
using rdi_musica.core;
using System.Linq;

namespace rdi_musica.infra
{
    public class BandaRepository
    {
       RdiContext context = new RdiContext();
       public Banda getBandaById(int Id)
       {
           var b = context.Bandas.Where(x => x.Id == Id).Select(x => x).FirstOrDefault();
           return b;
       }
    }
 }
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="Default" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;port=3306;database=redeinova_musica;uid=root;password=root"/>
</connectionStrings>
<entityFramework>
   <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
   <!--defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /-->
   <providers>
     <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"/>
     <!--provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /-->
    <!--provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider-->
  </providers>
  </entityFramework>
  <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, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>
 </system.data>
</configuration>
项目结构:

Ps:是的,我安装了MySql驱动程序并添加了引用


乍一看,您必须在
DbContext
类上设置
DbConfigurationTypeAttribute
,才能使用MySQL:

namespace rdi_musica.infra
{
   [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
   public class RdiContext : DbContext
   {
       public DbSet<Usuario> Usuarios { get; set; }
       public DbSet<Genero> Generos { get; set; }
       public DbSet<Banda> Bandas { get; set; }
       public DbSet<Musica> Musicas { get; set; }

   }
}
然后移除
dbProviderFactorys
系统内部的部分。数据元素:

<!-- taken from /a/21954322 by Donald Jansen -->
<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, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
参考:

类似问题:

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguratio‌​n, MySql.Data.Entity.EF6">
...
</entityFramework>
<!-- taken from /a/21954322 by Donald Jansen -->
<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, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
<!-- taken from /a/21954322 by Donald Jansen -->
<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguratio‌​n, MySql.Data.Entity.EF6">
    ...
    <providers>
        <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
    </providers>
</entityFramework>