当前位置:  开发笔记 > 后端 > 正文

.NET/LINQ-SQL/ASP.NET中的连接字符串地狱

如何解决《.NET/LINQ-SQL/ASP.NET中的连接字符串地狱》经验,为你挑选了3个好方法。

我有一个Web应用程序,包括以下内容:

一个Web项目(包含连接字符串的web.config文件 - 但Web项目中没有数据访问代码)

一个数据访问项目,它使用LINQ-SQL类为Web项目UI提供实体(该项目有一个设置文件和一个app.config - 两者都有连接字符串)

当我构建和部署时,Bin目录中没有设置文件或app.config,数据访问.dll,但更改web.config文件中的连接字符串不会相应地更改数据库 - 因此连接字符串必须被编译成数据访问dll.

我需要的是我的整个部署的一个配置文件 - 网站,数据访问dll,一切 - 有一个连接字符串被使用.目前,似乎有多个连接字符串在整个地方被使用或硬编码.

我如何才能最好地解决这个烂摊子?

谢谢你的帮助.



1> tvanfosson..:

我从未遇到过数据访问层(DAL)能够使用我web.config文件中的连接字符串的问题.通常我只是从DAL复制连接字符串部分并将其粘贴到web.config.我正在使用DBML设计器来创建数据上下文.

如果这不适合您,您可以在数据上下文构造函数中指定连接字符串.在您的Web项目中有一个静态类来加载您的设置,包括您的连接字符串,当您创建DAL对象(或数据上下文,如果直接创建它)时,只需将其传递给构造函数.

public static class GlobalSettings
{
    private static string dalConnectionString;
    public static string DALConnectionString
    {
       get
       {
           if (dalConnectionString == null)
           {
              dalConnectionString = WebConfigurationManager
                                      .ConnectionStrings["DALConnectionString"]
                                        .ConnectionString;
           }
           return dalConnectionString;
       }
    }
}
...

using (var context = new DALDataContext(GlobalSettings.DALConnectionString))
{
   ...
}


啊,我刚才意识到DAL =数据访问层.我们新手类型的语法有点慢.

2> Robert Durgi..:

启动项目的配置文件将定义所有包含项目的配置设置.例如,如果您的Web项目是启动项目,则对"appSettings"的任何引用都将从web.config中查找设置,其中包括对数据访问项目中"appSettings"的任何引用.因此,将任何配置设置从Data Access项目的app.config复制到Web项目的web.config.



3> Jason Kester..:

基于注册表滚动您自己的ConnectionFactory:

在SOFTWARE/[YOUR_COMPANY]/[YOUR_APP]下为您的应用程序添加注册表项

为ConnectionString添加一个字符串值

教你的ConnectionFactory破解相应的注册表项(在静态构造函数中,而不是每个页面加载!).

将注册表信息导出为.reg文件,将其添加到源代码管理,根据需要修改并应用它以设置其他计算机.

优点:

设置简单

Connectionstring位于一个地方

不在web/app.config中,因此无需硬编码特定于环境的设置.

不在web/app.config中,因此Junior Dev Jimmy不会意外地告诉您的生产服务器查看DEV数据库

缺点:

并不是很明显,重要的事情都存在于注册表中,所以新的开发人员需要指示.

配置新部署计算机时的额外步骤

注册表是oldskool.少年开发者会嘲笑你.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有