【问题标题】:Reducing Entity Framework library's dependency on app.config减少实体框架库对 app.config 的依赖
【发布时间】:2012-02-05 22:49:07
【问题描述】:

我正在寻找一些关于如何减少我的实体框架库对 app 或 web.config 文件的依赖的建议。我的应用程序包含一个 ADO.NET 实体数据模型。

我目前在一个 web 项目中引用了这个库,但为了这样做,我必须在部署之前将连接字符串添加到 web 应用的 web.config。

我现在需要使用独立 DLL,但无法更改父项目的配置文件以包含我的 EF 库的配置文件。

什么是存储我的连接字符串的最佳方式,同时保持我的 edmx 的完整性,我应该在哪里引用它?

【问题讨论】:

  • 这个问题可能会有所帮助:stackoverflow.com/questions/161763/…
  • 您的 app.config 中应该有连接字符串,并且您引用的 DLL 应该有一个属性,您可以从调用程序中获取和设置。
  • @AshwaniRoy 我不希望调用程序对连接字符串有任何控制权。
  • @rich.okelly 我已经尝试过了,但是尽管输出目录中存在 File.dll.config 文件,但我在运行应用程序时收到错误消息。 '在配置中找不到指定的命名连接,不打算与 EntityClient 提供程序一起使用,或者无效。'
  • @Nick 如果配置名为 File.dll.config,请求连接字符串的代码必须在 File.dll 中,您的应用中是否存在这种情况?

标签: c# .net entity-framework


【解决方案1】:
EntityConnectionStringBuilder builder = New EntityConnectionStringBuilder();
builder.Metadata =
    "res://*/Entities.VDMFinance.csdl|res://*/Entities.YourEntities.ssdl|res://*/Entities.YourEntities.msl";
builder.Provider = "System.Data.SqlClient";
builder.ProviderConnectionString = yourConnectionString;
Dim dc As New YourEntities(builder.ConnectionString)
dc.CommandTimeout = 0;

您可以从一直执行此操作的静态工厂初始化所有数据上下文。您可以从创建实体时生成的初始连接字符串中获取元数据和提供程序。

【讨论】:

  • 感谢您的提示。您能否建议我应该如何告诉我的实体框架将其用作我的连接字符串定义?
  • @Nick 您告诉 EF 通过将它传递给数据上下文的构造函数来使用它。这发生在示例的倒数第二行(上图)。
【解决方案2】:

在主 web.config / app.config 中指定配置对于所有 .NET 应用程序都是通用的。即使是大型产品也使用它。试图避免它没有任何好处。

如果您希望您的 .dll 管理连接字符串,它必须从某个地方读取它 - 可能来自您的库中硬编码文件名的自定义配置文件。加载连接字符串后,您可以将其传递给ObjecContext 的构造函数,如@linkerro 所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多