EF6无法找到LocalDBConnectionFactory

时间:2014-10-13 16:04:31

标签: c# asp.net-mvc entity-framework

我有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。请帮助,我会讨厌这个该死的东西。

2 个答案:

答案 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),它像一个魅力一样工作。