我有一个存储过程返回多个结果集。我正在用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/