8

我有一些查询需要一起运行,我可以使用QueryMultiple功能来完成。

但在这种情况下,我无法找出如何使用MultiMapping

有谁知道实现这一目标的方法?

4

2 回答 2

12

我认为这就是您正在寻找的内容,尽管如果没有您尝试执行的查询示例就很难判断。

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.
}

基本上的Read方法SqlMapper.GridReader类似于Query扩展方法。您只能获得splitOn具有两个以上泛型类型的重载之一的参数。

于 2013-07-05T12:23:00.453 回答
1

有一个来自另一个线程的快速示例:how-to-get-values-for-child-objects

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();
} 

每个查询都会返回一组对象,然后可以将其映射到您的实体。

于 2012-04-26T06:25:00.660 回答