使用Mysql设置实体框架6 - 代码优先

时间:2017-03-28 15:33:51

标签: c# mysql entity-framework

我正在尝试设置现有项目以使用Entity Framework。我之前从未使用它,并希望在个人项目中学习它。

我有很多项目的解决方案,都是相关的。登录是我想要查询的地方。模型是模型的所在。主要是程序开始的地方。

我已将EntityFramework安装到MySolution.Model。

这是Model:

的app.config
<connectionStrings>
    <add name="ALDatabaseContext" providerName="MySql.Data.MySqlClient"
        connectionString="server=localhost;port=3306;database=aldatabase;uid=root;password=root"/>
</connectionStrings>
<entityFramework>
    <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"/>
</providers>
</entityFramework>

我的上下文很简单

public class ALDatabaseContext : DbContext
{
    public virtual DbSet<User> Users { get; set; }
}

但是当我从Login调用上下文时,我得到一个例外:

  

其他信息:找不到具有不变名称“System.Data.SqlClient”的ADO.NET提供程序的实体框架提供程序。确保提供程序已在应用程序配置文件的“entityFramework”部分中注册。

我缺少什么?

1 个答案:

答案 0 :(得分:0)

好的,我设法让它工作(但我不喜欢这个解决方案)。

我已将此添加到Main的app.config(我的解决方案的入口点):

<connectionStrings>
<add name="ALDatabaseContext" providerName="MySql.Data.MySqlClient" connectionString="server=localhost;port=3306;database=aldatabase;uid=root;password=root" />
</connectionStrings>



<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
  <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>

并且还在Login和Main项目中引用了Model的所有dll(实体框架相关的dll和Mysql dll)。