【发布时间】:2012-11-22 16:00:55
【问题描述】:
我想知道有什么更好的方法可以将其中的一些代码抽象成一个简单的 DAL。目前,我只是在打补丁,没有时间也不需要使用 EF、Linq2Sql 或任何 ORM。
public string GetMySpecId(string dataId)
{
using (SqlConnection conn = new SqlConnection(this.MyConnectionString))
{
conn.Open();
// Declare the parameter in the query string
using (SqlCommand command = new SqlCommand(@"select ""specId"" from ""MyTable"" where ""dataId"" = :dataId", conn))
{
// Now add the parameter to the parameter collection of the command specifying its type.
command.Parameters.Add(new SqlParameter("dataId", SqlDbType.Text));
command.Prepare();
// Now, add a value to it and later execute the command as usual.
command.Parameters[0].Value = dataId;
using (SqlDataReader dr = command.ExecuteReader())
{
while (dr.Read())
{
specId = dr[0].ToString();
}
}
}
}
return specId;
}
什么是从 GetMySpecId() 中提取连接、命令等的好方法,因为我将拥有大量这些函数并且不想一遍又一遍地编写 using....
【问题讨论】:
-
我不确定您要在这里完成什么...我看到您以通常的 ADO.NET 方式从数据库中提取字符串 ID。您想如何以不同的方式编写此代码?将其余数据从
MyTable中提取出来并水合对象的其余部分?摆脱样板 SqlClient 的东西?我真的怀疑使用 ORM 可能值得你花时间。 Code-first EF 可以是一个非常轻量级的解决方案,并且可以快速设置。 -
遇到了一些基本问题。如果有多个 specID,则返回最后一个。如果没有 specID,则没有默认值。 Heck specID 甚至没有被声明。
标签: c# .net .net-3.5 data-access-layer sqlcommand