【问题标题】:connection strings and global variables, n-tier application with dll连接字符串和全局变量,带 dll 的 n 层应用程序
【发布时间】:2014-08-14 22:13:33
【问题描述】:

具有 4 层的分层应用程序,例如:

Presentation layer (MVC4)
Business layer (C# library project)
Data Access layer (c# library project)
Model layer (c# library project that contains models, EF dbcontext, etc)

所以在这个应用程序上,模型层包含 EF 数据库上下文、一些自定义模型和其他类似的东西,数据访问层包含对 ef 的查询和一些对数据库的直接查询,业务层包含业务逻辑和表示是一个mvc4项目。

业务、数据和模型层是库项目。

mvc4 presentation layer has references to BL and ML.
BL has references to DAL and ML.
DAL has references to ML.

所以问题是:我应该将字符串连接和全局变量保存在哪里? 而最重要的是怎么做?

我应该将它们保存在 mu mvc4 应用程序的 web.conf 中吗?如果是,ML如何访问它?

还是应该在 ML 上?

【问题讨论】:

  • 连接字符串应该放在 MVC 项目中。当您将连接名称提供给 DbContext 时,只需按名称使用它。

标签: c# entity-framework asp.net-mvc-4 connection-string n-tier-architecture


【解决方案1】:

是的,连接字符串进入 MVC4 应用程序的web.config。在模型层中,您只需使用“System.Configuration.ConfigurationManger”对象从应用程序的配置中检索命名的连接字符串。

在引用的 DLL 中访问时,连接字符串和其他配置项是从运行 DLL 的应用程序的配置中获取的。这允许您对 DLL 组件进行不同的配置,具体取决于您使用它的方式。

例如,您通常会有一个连接字符串指向 MVC4 应用程序的 web.config 中的真实数据库。但是,为了为您的模型 DLL 编写测试,您可以在测试项目的 app.config 文件中使用指向测试数据集的不同连接字符串。只要两个连接字符串具有相同的名称,Model.DLL 就不必知道或关心它们的来源。

【讨论】:

    【解决方案2】:

    您的 MVC 应用程序是应用程序的聚合根。所以你所有的服务/对象都应该在 MVC 中构建。将连接字符串保存在web.config 中是合乎逻辑的,并且有很好的方法可以将它们保存在那里,通过 web.config 转换将开发字符串替换为生产字符串。

    【讨论】:

      【解决方案3】:

      您的连接字符串应该放在 MVC4 应用程序的 Web.Config 中。

      我想在 ML 中你有一个 DbContext 的实现。只需将以下构造函数添加到该实现即可。

      public DatabaseContext() : base("ConnectionstringName") { }
      

      确保在您的 Web.config 中添加了相应的连接字符串。

      <connectionStrings>
      <add name="ConnectionstringName" .... />
      </connectionstring>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-24
        • 1970-01-01
        • 2011-04-19
        • 2011-10-29
        • 2019-11-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多