gpt4 book ai didi

c# - Dapper 多映射 - 集合为空

转载 作者:行者123 更新时间:2023-11-30 17:13:19 30 4
gpt4 key购买 nike

我正在尝试使用 Dapper 返回一组共享和关联的一对多 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 参数,但在阅读了 this question 之后我现在明白了 splitOn 在做什么(顺便说一句,如果能在 Dapper 网站上的某个地方就好了)而且我认为我可以很好地处理那部分。那我做错了什么?

最佳答案

我认为您无法从 1 行填充深度对象图。 (除非所有项目都在那一行)有一个类似的问题: Populating a list in a object with dapper

编辑:还有 QueryMultiple - 您可能想检查一下。它允许返回多个结果集。然后您可以映射您的实体。

Query Multiple Example

关于c# - Dapper 多映射 - 集合为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9872926/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com