我有一个类似以下这样的带有多个连接的查询:
var sqlFindByProviderNameAndProviderSubjectId = $@"
SELECT u.*, la.*, p.*, cp.*, scr.*, lm.*, wm.*
FROM [user].[User] u
LEFT JOIN [user].[LinkedAccount] la ON u.Id = la.UserId
LEFT JOIN [user].[PatientProfile] p ON u.Id = p.UserId
LEFT JOIN [user].[CareProviderProfile] cp ON u.Id = cp.UserId
LEFT JOIN [user].[Screening] scr ON u.Id = scr.UserId
LEFT JOIN [user].[LengthMeasurement] lm ON scr.Id = lm.ScreeningId
LEFT JOIN [user].[WeightMeasurement] wm ON scr.Id = wm.ScreeningId
WHERE u.Id = (
SELECT UserId
FROM [user].[LinkedAccount] la
WHERE la.ProviderName = @ProviderName AND la.ProviderSubjectId = @ProviderSubjectId)";
我使用Dapper将表格转化为强类型实体,例如:
await UnitOfWork.Connection.QueryAsync<User, LinkedAccount, PatientProfile, CareProviderProfile, Screening, LengthMeasurement, WeightMeasurement, User>(query,
(u, la, p, cp, scr, lm, wm) =>
{
// mapping code here
}
这个可以正常工作。
然而,我需要在查询中添加一个额外的JOIN,但不幸的是QueryAsync<>最多只能接受7个参数/类型,而我有更多。
是否有其他方法将多个JOIN中的表映射到实体中?