【问题标题】:Class library Database Connection String类库数据库连接字符串
【发布时间】:2012-12-29 16:36:01
【问题描述】:

我有一个使用相同域模型的多个项目的解决方案。因此,我创建了一个包含我的领域模型的类库。这个类库还包含在我的项目中使用的其他参数。然后,我在每个项目中添加对类库的引用。 我的类库还有一些从this example 派生的存储库类。

但是,我在连接数据库时遇到问题。我希望我的类库能够连接到数据库,因为我在那里定义了我的数据库上下文类,在那里我设置了我的数据库集。对于单个项目,我通常在 web.config 文件中定义我的连接字符串。但是类库没有 web.config 文件。如何设置我的连接字符串?

编辑

假设我有我的数据库上下文的构造函数,mydbcontext,在类库中定义为

public mydbcontext() : base(ConfigurationManager.ConnectionStrings["DatabaseCon"].ConnectionString)
    {

    }

如果我理解正确的话,将每个项目的连接字符串的名称设置为“DatabaseCon”是否可以?

【问题讨论】:

  • 程序集可以从其上下文中定位配置文件,例如从 Web 应用程序调用的程序集将有权访问 web.config。
  • 非常感谢。请查看编辑(如果我理解正确)
  • @jpo - 这是一种方法,但现在您的数据访问库无法单独测试。

标签: asp.net-mvc-3 shared-libraries connection-string


【解决方案1】:

你没有。

将连接字符串作为依赖项传递给需要它的任何类。

你可以封装对它的访问——但你应该在任何使用这个库的程序中实例化它。该程序将在其配置中保存连接字符串。

【讨论】:

  • 这是我没有考虑过的一种方法。可以举个例子吗?
  • @jpo - 一个例子?您只需将一个字符串参数传递给任何需要它的东西。
【解决方案2】:

您应该在使用类库的应用程序的 web.config 文件中定义连接字符串。作为替代方案,您可以将连接字符串硬编码到类库中 DbConext 的构造函数中 - 非常糟糕的方法,因为您无法从外部修改它 - 例如,您将很难管理不同的连接字符串适用于不同的环境 - 暂存、生产、...

【讨论】:

  • 我已经告诉过你:你将连接字符串放在使用这个库的 Web 应用程序的 web.config 中。这才是正确的做法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-11
相关资源
最近更新 更多