在依赖程序集中配置实体框架

本文关键字:配置 实体 框架 集中 程序集 依赖 程序 | 更新日期: 2023-09-27 18:32:52

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

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

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

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

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

在依赖程序集中配置实体框架

如 MSDN 链接中所述,配置应驻留在可执行应用程序(web.config、app.config(中。类库仅包含代码,当从可执行项目引用时,仅复制和使用.dll文件。因此,即使您在类库项目的 app.config 中填写配置,也不会使用该数据。

另一方面,您唯一需要做的就是在可执行配置文件中包含配置信息。如果不需要 EF,则无需在此处引用 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>