需要ASP.Net应用程序连接字符串的指导

需要ASP.Net应用程序连接字符串的指导,asp.net,connection-string,data-access-layer,Asp.net,Connection String,Data Access Layer,NET2.0/VisualStudio2005/ASP.NETWeb应用程序 我在这个网站上读了很多帖子和评论,但有些帖子和评论让我难以理解,有些则不符合我的要求 所以我有一个三层应用程序——UI、BLL和DAL。在DAL中,我通过从服务器资源管理器中拖拽StoredProcess创建了数据集。因此,连接字符串被硬编码到数据集文件中 我希望有人能一步一步地解释我必须做什么,这样当我在UI(主项目)设置设计器中将连接字符串传递到BLL,然后再传递到DAL时 我们这样做的方式是在web.config

NET2.0/VisualStudio2005/ASP.NETWeb应用程序

我在这个网站上读了很多帖子和评论,但有些帖子和评论让我难以理解,有些则不符合我的要求

所以我有一个三层应用程序——UI、BLL和DAL。在DAL中,我通过从服务器资源管理器中拖拽StoredProcess创建了数据集。因此,连接字符串被硬编码到数据集文件中


我希望有人能一步一步地解释我必须做什么,这样当我在UI(主项目)设置设计器中将连接字符串传递到BLL,然后再传递到DAL时

我们这样做的方式是在web.config文件中包含连接字符串(app.config也可以使用)。例如:

<add key="ConnectionString" value="Data Source=localhost;Initial Catalog=MyDatabase;User ID=username;Password=abc123"/>

您可以使用ConfigurationManager.AppSettings[“where”]从.config文件中提取由“where”指定的值。非常方便,可以很好地在开发、测试和生产环境之间切换。

如果可能的话,我会避免拖放编码。如果你玩太多魔法,你会被烧死的

连接字符串应仅位于应用程序中的一个位置。如果您的所有层都与连接字符串有关,那么这就是一个问题。DAL应该是与连接字符串相关的唯一层

让DAL获取连接字符串的一个好方法是通过IoC(控制反转)。这样就不必通过所有构造函数传入连接字符串


数据集有些过时。如果你正在处理一个新的应用程序,你可能会考虑使用一个ORM,比如NHiBiNATE或LINQ

< P>我猜想当你拖动SP时,设计器会为你创建一个TabeAdvApter。适配器上有一个连接属性,您可以为适配器设置该属性以用于填充数据表。我同意其他人的看法,即您需要将连接信息保存在配置文件中或存储配置的其他位置。我也不喜欢拖放到设计器中,但这应该可以用来管理数据库连接。

web.config中有一个特殊的部分,您可以添加名为ConnectionString的内容。您将添加到web.config:

  <connectionStrings>
    <add name="oracle" connectionString="Data Source=server; User ID=user; Password=password;"/>
  </connectionStrings>
我知道它比第一个示例稍微复杂一点,但是它有助于保持配置文件的组织,特别是当这个文件变得越来越复杂时,您将学习如何评价这个ConnectionString部分

祝你好运


Ricardo。

最后,我的问题是:是否有一种方法可以覆盖在运行时在DAL项目设置设计器中设置的连接字符串。。因此DAL中的数据集可以将此连接字符串用于表适配器

我在另一篇文章中读到,如果在主项目的设置中有同名的属性(与DLL中的属性相同),那么子项目(DLL)会选择该属性的值,而不是在它自己的设置中为其设置的值


举个例子,如何做到这一点

这是一个非常有趣的场景,我以前也经历过,因为我有时在多层应用程序中使用dataset。这就是解决办法

我假设除了UI之外,所有的都是BLL、DAL的类库项目。在DAL中,您将拥有数据集设计器,它将连接字符串放在DAL类lib prj的app.config下。现在,如果您需要引用DAL上面的BAL,它又是一个类库prj,请从DAL的app.config复制ConnectionString部分,并将其粘贴到BAL classlib prj的app.config的ConnectionString部分。这里您必须注意,连接字符串名称不仅仅是“myDataBaseConnStr”。它应该有详细的名称空间引用,比如MyApp.DataLayer.DataSet.myDataBaseConnStr。您应该对UI层app.config或web.config执行相同的过程。成功完成此操作后,可以在UI层应用程序[web.config或app.config]的根配置文件中更改connectionString。这样,它将始终从UI层拾取connectionString,因为它在运行时是正在执行的AppDomain。因此,您可以在那里更改连接字符串,并将其反映在基础BAL和DAL中


谢谢。

拖放是最快捷的方法。。我不想编写所有这些代码,因为可以很容易地可视化数据集中不同数据表中的列以及数据集中表适配器上相应的数据检索/插入/更新函数。所以没有解决办法?是的,但是除非你理解拖放界面为你输入的代码,否则你就会陷入困境。是的,你是对的,我在DAL中使用的表适配器是这样的:公共类dalcuster{public DataTable getLookupDT(string strLookupCatgy){DataTable dt=null;开关(strLookupCatgy){case“Representative”:dt=new taSalesRep().GetData();break;case“Branch”:dt=new taBranch().GetData();break;}return dt;}}}因此,我可以在表适配器上设置连接属性。。但是有点乱。。还有其他选择吗?我不太喜欢datatables…您可以自己手动填充表格…无需适配器。如果查看表格适配器的属性窗口,您可以看到Connection属性。该属性包含连接信息所在的位置,我猜默认情况下它将从配置文件中退出。因此,设计师应该将其添加到web.config文件中…假设适配器位于web项目中,而不是另一个库中。您提供了一个非常好的解决方案。我喜欢。。我们有同样的问题,我们添加了从web.config获取连接字符串的自定义类,然后在使用tableadapter时手动打开连接
  <connectionStrings>
    <add name="oracle" connectionString="Data Source=server; User ID=user; Password=password;"/>
  </connectionStrings>
string connString = ConfigurationManager.ConnectionStrings["oracle"].ConnectionString;