首页 > 解决方案 > 从数据库查询中填充类对象的更好方法?

问题描述

目前我正在使用 SqlCommands 来运行存储过程,我将 ExecuteReader 并运行一段时间 .read,将每个字段分配给一个对象,然后将该对象添加到一个列表中。到目前为止,当存储过程返回几个字段时,这工作得很好,但现在我需要返回一个包含 20 多个字段的完整数据库行。我应该这样做有更好的方法吗?

这是我当前如何使用 SqlCommand 对象并填充类的示例。

private IEnumerable<DigitalQueue> GetUncheckedQueues()
    {
        var cmd = new SqlCommand
        {
            CommandTimeout = 30,
            CommandText = "sp_StoredProcedureName",
            Connection = Main.Con,
            CommandType = CommandType.StoredProcedure
        };

        var sdrQueues = cmd.ExecuteReader();
        var uncheckedQueues = new List<DigitalQueue>();
        while (sdrQueues.Read())
        {
            var workingQueue = new DigitalQueue
            {
                queueId = sdrQueues.GetValue(0).ToString(),
                queueStatus = sdrQueues.GetValue(1).ToString()
            };
            if (!sdrQueues.IsDBNull(2))
            {
                workingQueue.queueDate = sdrQueues.GetDateTime(2);
            }
            uncheckedQueues.Add(workingQueue);
        }
        return uncheckedQueues;
    }

标签: c#sqldatareadersqlcommand

解决方案


开始使用Dapper,它是最好的一种微结构,可以帮助您以最有效的方式将查询映射到对象。

Dapper 入门 Dapper 教程

示例代码

var uncheckedQueues = connection.Query<DigitalQueue>("sp_StoredProcedureName", commandType: CommandType.StoredProcedure).ToList();

推荐阅读