【发布时间】:2015-01-07 04:30:06
【问题描述】:
我正在通过 ADO.NET 调用存储过程,如下所示(简化形式)。该数据库是 MySQL 数据库。 存储过程返回一个 ID 值列表,这些值对应于需要重新安排其调用时间的调用。 C# 代码将它们存储在一个列表中。
我的问题是:有没有更有效的方法将值放入 C# 列表,而不是像我一样使用 DataReader? 我还不知道我这样做的方式是否对我们的应用程序效率太低(这将在测试期间确定),我只是在寻找一种更快的策略,如果存在的话。
我研究过使用 DataSet,但根据我的阅读,如果 ID-s 的列表很大(可能是这样),它可能会更慢。 另外,根据我的阅读,LINQ 也可能更慢。
我只需要将列表存入callsToRescheduleList;即,我不需要对 ID-s 进行任何随机访问,因此不需要 DataSet 的那些功能。 我只是在寻找将数据放入列表的最快方法。
有什么建议吗?
C# 代码:
private void GetCallsToRescheduleList()
{
MySqlCommand cmd = new MySqlCommand
(
"`phytel`.`spPhy_GetCallsToRescheduleListPreviousDays`",
(MySqlConnection) DatabaseConnection, workerTransaction
);
cmd.CommandType = CommandType.StoredProcedure;
MySqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while( reader.Read())
{
callsToRescheduleList.Add(reader.GetInt32(0));
}
}
}
MySQL 存储过程:
CREATE PROCEDURE `spPhy_GetCallsToRescheduleListPreviousDays` ()
BEGIN
SELECT
id
FROM callrequest
WHERE
dialerCampaignId = 'CATH001’
AND
status = 'SCHEDULED’
;
END
【问题讨论】:
-
你可以查看像实体框架或 NHibernate 这样的 ORM
标签: c# mysql stored-procedures ado.net