我在我的APS.NET 4.5 Web应用程序中使用Entity Framework 6。
运行以下命令时:
using (var db = new booksEnteties())
{
var books = from b in db.books
select b;
}
我收到以下错误:
类型' System.Configuration.ConfigurationErrorsException'的异常发生在System.Configuration.dll中但未在用户代码中处理
详情:
无法识别的属性'名称'。
它指向web.config第111行:
<remove name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" />
当我删除此行并尝试再次运行时,我收到以下错误:
为system.data创建配置节处理程序时出错:Column&#39; InvariantName&#39;被限制为独特的。价值&#39; MySql.Data.MySqlClient&#39;已经存在。
我认为这与web.config中的Entity Framework 6配置有关。
答案 0 :(得分:4)
正如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了解更多详情。
答案 1 :(得分:2)
只需添加版本摘要
在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中。试一试!
答案 2 :(得分:1)
错误非常具体......它抱怨属性'Name' 你的问题就在这一行:
<remove name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" />
这里的名称无效,只需删除它就应该是这样的:
<remove invariant="MySql.Data.MySqlClient" />