我有几个查询需要一起运行,可以使用QueryMultiple功能来实现。
但在这种情况下,我无法找到如何使用MultiMapping。
是否有人知道实现这一点的方法?
我有几个查询需要一起运行,可以使用QueryMultiple功能来实现。
但在这种情况下,我无法找到如何使用MultiMapping。
是否有人知道实现这一点的方法?
我认为这就是你在寻找的内容,尽管没有你要执行的查询示例,很难确定。
var sql = @"Select *
From Parent
Left Join Child on Child.ParentID = Parent.ParentID
Where Parent.ParentID = @id
... more queries";
using(var reader = connection.QueryMultiple(sql, new {id=selectedId}))
{
var stuff = reader.Read<Parent, Child, Parent>(
(p,c)=>
{
p.Child = c;
return p;
}, splitOn: "ChildId").Single();
// Continue to read from the other queries in your sql.
}
实际上,SqlMapper.GridReader
的 Read
方法类似于 Query
扩展方法。只有在使用超过两个泛型类型的重载之一时,才会使用 splitOn
参数。
这是一个从另一个线程中获取的快速示例:如何为子对象获取值
var sql =
@"
select * from PROFILES where profileId= @id
select * from PROFILEIMAGES where OWNER_PROFILESIDFK = @id";
using (var multi = connection.QueryMultiple(sql, new {id=selectedId}))
{
var profile = multi.Read<Models.PROFILE>().Single();
profile.ProfileImages = multi.Read<Model.PROFILEIMAGES>().ToList();
}