Dapper multi-mapping - 集合是空的

c# dapper

我正在嘗試使用Dapper返回一組Share和一對多的ShareItems和ShareHistories的一對多集合。我的Dapper調用看起來像這樣:

string sql =
    @"select s.Id, s.UserId, s.Name, si.ShareId as Id, si.Name as ItemName
    , sh.ShareId As Id, sh.DateShared, sh.SentTo 
    from Shares s 
    inner join ShareItems si on s.Id = si.ShareId
    inner join ShareHistory sh on s.Id = sh.ShareId
    where s.Id = @shareId";

    return conn.Query<Share, List<ShareItem>, List<ShareHistory>, Share>(
                sql,
                (share, shareItems, history) => 
                    { 
                      share.Items = shareItems; 
                      share.History = history; return share; 
                    },
                new { shareId = shareId }).Single();

當我在SQL中運行查詢時,我得到了我期望的扁平化數據。但是,當我通過Dapper運行代碼時,Items和History集合將變回空白。我正在使用splitOn參數,但在閱讀完這個問題後,我現在明白了什麼是splitOn正在做什麼(這對於在Dapper網站上的某個位置btw會很好)我認為我正在處理那個部分沒關係。那麼我做錯了什麼?

一般承認的答案

我不認為你可以從1行填充深度對像圖。 (除非所有項目都在那一行中)有一個類似的問題: 使用dapper填充對像中的列表

編輯:還有QueryMultiple - 您可能想要檢查出來。它允許返回多個結果集。然後,您可以映射您的實體。

查詢多個示例



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