我创建了一个 Sql 帮助类来处理我的大部分需求。
其中,我有一个执行 SQL 语句并返回 SqlDataReader 的函数,如下所示:
public static SqlDataReader ExecuteCommand(string cmdText, bool useParameters)
{
using (var sqlConnection = new SqlConnection(_connectionString.ConnectionString))
{
sqlConnection.Open();
using (var sqlCommand = new SqlCommand(cmdText, sqlConnection))
{
if (useParameters && SqlParameterCollection.Count > 0)
{
sqlCommand.Parameters.AddRange(SqlParameterCollection.ToArray());
}
using (var sqlDataReader = sqlCommand.ExecuteReader())
{
return sqlDataReader;
}
}
}
}
显然,这个问题是它返回一个需要打开连接的 sqlDataReader 以及连接已关闭的事实。
我已经研究过返回一个 SqlDataAdapter,但是在阅读了以下线程SqlDataAdapter vs SqlDataReader之后,当您完全不知道数据量时,作为在每个场景中使用的通用函数听起来并不是一个好主意它应该加载。
那么......有什么好的选择?
我唯一能想到的就是循环遍历 SqlDataReader 中的行并执行yield return IEnumerable<IDataRecord>
.
有没有更好的方法来实现这一点,或者这差不多吗?