【发布时间】:2012-04-19 15:08:15
【问题描述】:
我知道创建自定义数据访问层并不是一个好主意,除非您:1) 确切地知道自己在做什么,和/或 2) 有非常具体的需求。但是,我正在维护一些使用自定义数据访问层的遗留代码,其中每个方法看起来像这样:
using (SqlConnection cn = new SqlConnection(connectionString))
{
using (SqlDataAdapter da = new SqlDataAdapter("sp_select_details", cn))
{
using (DataSet ds = new DataSet())
{
da.SelectCommand.Parameters.Add("@blind", SqlDbType.Bit).Value = blind;
da.SelectCommand.CommandType = CommandType.StoredProcedure;
da.SelectCommand.CommandTimeout = CommandTimeout;
da.Fill(ds, "sp_select_details");
return ds;
}
}
}
因此,用法如下所示:
protected void Page_Load(object sender, EventArgs e) {
using (Data da = new Data ("SQL Server connection string")) {
DataSet ds = da.sp_select_blind_options(Session.SessionID); //opens a connection
Boolean result = da.sp_select_login_exists("someone");//opens another connection
}
}
我认为使用 Microsoft 的企业库可以让我免于设置和拆除,即每次方法调用都连接到 SQL Server。我的这个想法对吗?
【问题讨论】:
-
自定义数据访问层绝对没有问题。非自定义访问层由不知道自己在做什么也不知道自己需要什么的人编写,现在 taht 有很多问题。
标签: c# ado.net data-access-layer