依赖程序集

时间:2016-02-02 19:03:01

标签: c# entity-framework

我有问题。我想隐藏在单独的程序集中访问数据库的所有逻辑。但是,第一次调用数据库时,应用程序崩溃并出现错误

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

有关更多信息:对于具有不可更改名称“System.Data.SqlClient”的ADO.NET提供程序未找到提供程序实体框架。确保供应商已在“entityFramework”应用程序配置文件部分中注册。有关更多信息,请参阅。第http://go.microsoft.com/fwlink/?LinkId=260882页。 “

依赖程序集的配置文件中指定的所有供应商和连接字符串。在msdn中,我读到必须在配置可执行程序集中注册所有配置。但在这种情况下,必须在主组件中拉出EF,这不应该是

其实这个问题。如何将Ef配置用于依赖程序集?

1 个答案:

答案 0 :(得分:1)

如链接到MSDN所述,配置应驻留在可执行应用程序(web.config,app.config)中。 您的类库只包含代码,从可执行项目引用时,只复制和使用.dll文件。因此,即使您在类库项目的app.config中填充了未使用数据的配置。

另一方面,您唯一需要做的就是在可执行配置文件中包含配置信息。如果您不需要,则无需在那里引用EF。想想它就好像你自己的dll需要在配置文件中存在一些配置,在这种情况下是EF部分,但可能是任何其他的东西。

您的配置文件应如下所示:

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
    ...
  </configSections>
  ...
  <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>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="..." providerName="System.Data.SqlClient" />
  </connectionStrings>
  ...
</configuration>