繁体   English   中英

Dapper多映射 - 集合是空的

[英]Dapper multi-mapping - collections are empty

我正在尝试使用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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM