【问题标题】:Unrecognized attribute 'name' error when running linq command运行 linq 命令时出现无法识别的属性“名称”错误
【发布时间】:2014-09-23 20:15:28
【问题描述】:

我在我的 APS.NET 4.5 Web 应用程序中使用 Entity Framework 6。

运行以下命令时:

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

我收到以下错误:

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

在细节中:

无法识别的属性“名称”。

它指向 web.config 第 111 行:

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

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

为 system.data 创建配置节处理程序时出错:列“InvariantName”被限制为唯一。值“MySql.Data.MySqlClient”已经存在。

我认为这与 web.config 中的 Entity Framework 6 配置有关。

【问题讨论】:

  • 你能发布你的.config吗?至少包含连接/数据库信息的所有 XML(带有结构)。刚刚注意到#111 行。只是具体的东西会很好。

标签: c# asp.net linq entity-framework web-config


【解决方案1】:

正如 Tim Tang 所说,如果您使用的是 Entity Framework 6,则需要使用 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了解更多详情。

【讨论】:

    【解决方案2】:

    只是添加版本摘要

    • 对于 EF4,使用 Connector/NET 6.6.x(当前 GA 为 6.6.6)
    • 对于 EF5,使用连接器/NET 6.7.x(当前 GA 为 6.7.4)或 连接器/NET 6.8.x(当前 GA 为 6.8.3)。
    • 对于 EF6,使用 Connector/NET 6.8.x(当前 GA 为 6.8.3)。

    在 EF5 或更低版本中,一切正常。在 EF6 中,您需要使用 mysql 连接器 6.8.x,并将 DbConfigurationTypeAttribute 添加到您的 DbContext:

    [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class DemoContext : DbContext{}
    

    哪个 MySqlEFConfiguration 在 6.8.x 中的 MySql.Data.Entity.EF6.dll 中。试一试!

    【讨论】:

    【解决方案3】:

    错误非常具体...它抱怨属性“名称” 您的问题出在这一行:

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

    此处的名称无效,只需将其删除,它应该是这样的:

    <remove invariant="MySql.Data.MySqlClient" />
    

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-10
      • 2011-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多