需要帮助服务堆栈或mLite 如何使用多联接表更新表实体框架 C#

本文关键字:更新 实体 框架 何使用 服务 帮助 堆栈 mLite | 更新日期: 2024-11-07 17:02:01

>我需要服务堆栈专家的帮助,以便在 C# 中使用连接多个表进行服务堆栈更新查询。 我已经用谷歌搜索并浏览了所有相关文档和网站,但无法找到有关使用加入查询更新的足够详细信息。

我想通过连接三个不同的表和 where 子句来更新一个表。我已经通过实体框架尝试了所有方法,但无法做到。我可以通过Db.ExecuteSql(SqlQuery)来做到这一点,但我想通过实体框架来做到这一点。我的查询如下。

我想更新心率表

的更新状态与患者详细信息、设备会话、患者会话和心率表的连接,其中子句是 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));

请帮帮我。

谢谢

苏希尔

需要帮助服务堆栈或mLite 如何使用多联接表更新表实体框架 C#

//试试这个

var model = from v in Db.HeartRate
                  where
                  (
                      from pd in Db.PatientDetails
                      join ps in Db.PatientSession on pd.PatientDetailsId equals ps.ByPatientId
                      join ds in Db.DeviceSession on ps.PatientSessionId equals ds.ByPatientSessionId
                      join hr in Db.HeartRate on ds.DeviceSessionID equals hr.ByDevSessionID
                      where pd.PatientId == PatientId && hr.Timestamp == starttime
                      select new { HeartRateID = hr.HeartRateID }
                  ).ToList().Contains(v.HeartRateID)
                  select v;
        foreach (var item in model)
        {
            item.UpdateStatus = 1;
            Db.SaveChanges();
        }