.net - 使用QueryMultiple的Dapper多重映射

标签 .net sql dapper

我有一个存储过程返回多个结果集。我正在用dapper执行此操作。

结果集之一是Person JOIN Checks,其中Person可以具有许多Checks。

最终目标是使不同的人员对象具有检查对象的集合。
QueryMultiple给我一个Sqlmapper.GridReader。我看到SqlMapper.GridReader.Read()重载了Func<TFirst, TSecond, TReturn>

有一个如何使用此示例?

最佳答案

这是我的工作方式:

var q = _sqlConnection.QueryMultiple("MySproc",
                                     myParams,
                                     commandType: CommandType.StoredProcedure);
var set1 = q.Read<Set1Type>();

var set2Func = new Func<Person, Check, Person>((p, c) => {
    p.CheckAlert = c;
    return p;
});

var set2 = q.Read(set2Func, "CheckId")
            .GroupBy(x => x.PersonId)
            .Select(x => {
                var person = x.First();
                person.Checks = x.Select(p => p.Check).ToArray();
                person.Check = null; // i really don't like this
                return person;
            })
            .ToArray();

就像评论所说,我不喜欢Person对象上不需要的check属性。

我仍然很想听听这样做的更好方法。

关于.net - 使用QueryMultiple的Dapper多重映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12978454/

相关文章:

.net - 您是否已将 .NET 计算应用程序部署到 Windows Azure 之外的云中?

.net - 在不同级别更改了InotifyPropertyChange的简单MVVM

.net - 在自定义 BCS/.net 类上实现安全性?

php - 查询架构以获取用户关注的帖子

mysql - 如何统计评论总数?

mysql - SQL,按最大列数选择分组

.net - 如何从 Windows Server Core 上的 WPF 应用程序使用“浏览文件夹”对话框?

dapper - 如何将 Dapper 与 Elastic Sc​​ale MultiShardConnection 和 MultiShardDataReader 结合使用?

stored-procedures - 使用 ORMLite 和输出参数的 ServiceStack MARS(多个事件结果集)

c# - 有没有办法使用 Dapper 将每一行检索为 IDictionary<string, string> ?