有沒有辦法在Dapper中一起使用MultiMapping和QueryMultiple?

dapper

我有一些需要一起運行的查詢,我可以使用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.GridReaderRead方法類似於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();
} 

每個查詢都返回一組對象,然後這些對象可以映射到您的實體。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因