我正在使用以下内容检索个人资料详细信息:
var profiles = connection.Query<Models.PROFILE>(
"SELECT * FROM PROFILES WHERE ID=@ID",
new { ID = profileID }); // IEnumerable
var profile = profiles.First<Models.PROFILE>();
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
并收到以下错误:
使用多映射API时,如果您具有Id参数名称以外的键,请确保设置splitOn参数:splitOn
我尝试过我的splitOn文本中的变体,但仍然会得到相同的错误.
Dapper不支持开箱即用的一对多映射.看看这个问题,它可能会有所帮助.
如果您的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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9186 次 |
| 最近记录: |