运行Linq命令时出现无法识别的属性'名称'错误

人气:503 发布:2022-10-16 标签: web-config asp.net c# entity-framework linq

问题描述

我在我的APS.NET4.5 Web应用程序中使用Entity Framework6。

运行以下命令时:

using (var db = new booksEnteties())
{
    var books = from b in db.books
    select b;
} 

我收到以下错误:

在System.Configuration.dll中出现‘System.Configuration.ConfigurationErrorsException’类型的异常,但未在用户代码中处理

在详细信息中:

无法识别的属性‘name’。

它将我指向web.config行111:

 <remove name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" />

当我删除此行并尝试再次运行时,出现以下错误:

为system创建配置节处理程序时出错。data:列‘InariantName’被约束为唯一。值"MySql.Data.MySqlClient"已存在。

我假设这与web.config中的Entity Framework6配置有关。

推荐答案

正如Tim Tang所说,如果您使用的是Entity Framework6,则需要使用Connector/Net 6.8.x。 您还应该将对MySql.Data.Entity.EF6的引用添加到您的项目中。

然后,对于Web.config文件,如下所示:

 <entityFramework>
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" 
                type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
    </providers>
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient"></remove>
      <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.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </DbProviderFactories>
  </system.data>

有关更多详细信息,请查看this。

772