我有2个项目:类库(作为DAL层)和ASP.NET MVC项目(作为UI)。为了获取数据,我尝试使用EF6,但它不起作用。 所有异常文本:
类型' System.InvalidOperationException'的例外情况发生在EntityFramework.dll中但未在用户代码中处理
其他信息:没有为ADO.NET提供程序找到具有不变名称&Systems.Data.SqlClient'的实体框架提供程序。确保提供商已在' entityFramework'中注册。应用程序配置文件的一部分。
在DAL app.config中我有这个:
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory,
EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient"
type="System.Data.Entity.SqlServer.SqlProviderServices,
EntityFramework.SqlServer" />
</providers>
</entityFramework>
EF使用sqexpress提供程序生成连接字符串:
Data Source =。\ SQLEXPRESS; Initial Catalog = DAL.Entity.DataContext; Integrated Security = True; MultipleActiveResultSets = True
P.S。请帮助,我会讨厌这个该死的东西。
答案 0 :(得分:2)
为了让您的DAL项目具有正确的配置设置,您必须在web.config中包含EntityFramework信息。原因是UI项目是主要程序集,因此,所有配置信息都必须来自其配置文件。编译时,引用的程序集配置文件不用于配置,只用于主配置文件。
据说,这是使用EntityFramework的最低 web.configuration文件。确保在配置文件中正确嵌套了标记。
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=DAL.Entity.DataContext;Integrated Security=True;MultipleActiveResultSets=True" />
</connectionStrings>
<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
请注意,我并不是要复制/粘贴它,而是查看元素级别并确保在web.config中使嵌套级别正确。元素乱序将导致500.19配置错误。
答案 1 :(得分:0)
我遇到了类似的问题,这种方法部分起作用。它正在选择“ SQLExpress”,并抛出连接错误。
仔细查看后,我发现另一层是“设置为启动项目”,而不是ASP.NET MVC项目(作为UI)。
将“设置为启动项目”更改为ASP.NET MVC项目(作为UI),它像一个魅力一样工作。