gpt4 book ai didi

c#-4.0 - 如何使用 Dapper ORM 获取子对象的值?

转载 作者:行者123 更新时间:2023-12-03 06:38:37 25 4
gpt4 key购买 nike

我正在使用以下内容检索个人资料详细信息:

var profiles = connection.Query<Models.PROFILE>(
"SELECT * FROM PROFILES WHERE ID=@ID",
new { ID = profileID }); // IEnumerable
var profile = profiles.First<Models.PROFILE>();

配置文件对象包含其他集合,例如 profileImages。问题在于每个子对象的项目计数为零。另外,我只想获取 profileImages 的数据。

是否需要设置某些内容来查询子对象,如果是,是否可以指定哪一个以及多少级别?

我也尝试过多重映射:

var profiles = connection.Query<Models.PHOTOS_PERMISSIONS,
Models.PROFILE,
Models.PHOTOS_PERMISSIONS>(sql,
(p1, p2) => { p1.ID = profileID; return p1; },
new { ID = profileID },
splitOn: "OWNER_PROFILESIDFK, ID").AsQueryable();

PHOTOS_PERMISSIONS.OWNER_PROFILESIDFK = PROFILE.ID

并出现以下错误:

When using the multi-mapping APIs ensure you set the splitOn param if you have keys other than Id Parameter name: splitOn

我尝试了 splitOn 文本中内容的变体,但仍然遇到相同的错误。

最佳答案

Dapper 不支持像这样开箱即用的一对多映射。看看这个问题,它可能会有所帮助。

Multi-Mapping, one-to-many

如果您的 PROFILEIMAGES 表在 PROFILES ID 上有 FK - 您可以发出 2 个查询并使用 GridReader。

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

关于c#-4.0 - 如何使用 Dapper ORM 获取子对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10235750/

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