【问题标题】:Setup Entity Framework 6 with Mysql - Code first使用 Mysql 设置实体框架 6 - 代码优先
【发布时间】:2017-03-29 01:33:35
【问题描述】:

我正在尝试设置一个现有项目以使用实体框架。我以前从未使用过它,想在个人项目中学习它。

我有一个包含许多项目的解决方案,所有项目都相关。登录是我想做查询的地方。模型是模型所在的位置。 Main 是程序开始的地方。

我已将 EntityFramework 安装到 MySolution.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”部分注册。

我错过了什么?

【问题讨论】:

  • 你使用实体框架向导了吗?
  • Mm nop,我已经使用 Nuget 安装了实体框架,并按照 mysql 页面的说明进行了配置。
  • 您是否添加了对MySql.Data.Entity.EF6 的引用?确保复制到bin 文件夹。
  • 我已经尝试全部添加,还在登录项目上安装 EF 和 Mysql.Data 没有结果。我可以对模型项目进行查询,工作,但是当我想在另一个项目中使用它时,它会抛出我在帖子中提到的异常。我不知道我必须在 Login 项目中做什么才能让它工作..

标签: c# mysql entity-framework


【解决方案1】:

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

我已将此添加到 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)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 2012-12-30
    • 2011-11-03
    • 2014-03-23
    • 2014-01-03
    相关资源
    最近更新 更多