我正在写一个Servicestack更新查询与连接多个表在C#。我已经搜索了网络,并通过所有相关的文档和网站,但无法找到足够的细节更新与连接查询。
我想用连接三个不同的表和where子句来更新一个表。我已经尝试了实体框架的所有方法,但无法做到这一点。我可以通过Db.ExecuteSql(SqlQuery)来做到这一点,但我想通过实体框架来做到这一点。我的查询如下。
我想更新心率表连接的UpdateStatus与PatientDetails、DeviceSession、PatientSession和HeartRate表,where子句为HeartRate。timestamp =“@starttime”和PatientId =“@PatientId”
SqlQuery =
UPDATE HeartRate SET UpdateStatus = 1
WHERE HeartRateID IN ( SELECT hr.HeartRateID
FROM PatientDetails pd join PatientSession ps on pd.PatientDetailsId = ps.ByPatientId
join DeviceSession ds on ps.PatientSessionId = ds.ByPatientSessionId join HeartRate hr on ds.DeviceSessionID = hr.ByDevSessionID
WHERE
pd.PatientId = '@PatientId'
AND
hr.Timestamp = '@starttime'
order by hr.Timestamp Asc )
我需要下面的东西(它是错误的和不完整的)。
Db.UpdateOnly(
new HeartRate { UpdateStatus = 1 },
ps => new { ps.UpdateStatus },
.SqlJoinBuilder<DeviceSession, PatientSession>((ds2, ps) => ds2.ByPatientSessionId == ps.PatientSessionId)
.Join<PatientSession, PatientDetails>((ps2, pd) => ps2.ByPatientId == pd.PatientDetailsId)
.Where<HeartRate, PatientDetails>((lthr2, pd2) => (lthr2.Timestamp == @starttime) && pd2.PatientId == PatientId)
.OrderBy(lthr2 => lthr2.Timestamp));
1条答案
按热度按时间ldfqzlk81#
//试试这个