【发布时间】:2022-04-26 20:19:49
【问题描述】:
我创建了一个 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>。
有没有更好的方法来实现这一点,还是差不多?
【问题讨论】:
标签: c# ienumerable sqldatareader