无法用新的日期时间值“代码优先”更新行

本文关键字:代码 代码优先 更新 时间 日期 | 更新日期: 2023-09-27 18:07:53

Edit
查询是正确的,我得到的错误是由于以下注销fx被调用两次,一次来自html href,另一次来自ajax。ajax调用具有UID,而Html具有null,因此抛出异常——稍后调用Html。谢谢你的建议。因为我是新的stackoverflow,我不确定如何对待答案/评论,因为他们都是正确的。

如何用新的datetime值更新行?

          try
            {
                var last = (from l in db.loginActivity
                                 where l.UID.Equals(_uid)
                                 orderby l.LastLogin descending
                                 select l).FirstOrDefault();
                last.LastLogout = DateTime.Now;
                db.Entry(last).State = EntityState.Modified;
                db.SaveChanges();
            }

当我使用FirstOrDefault() -> error: object ref not set to a instance of a object。当我使用First() ->错误:序列不包含任何元素。嗯,数据库中有几条记录。我在某个地方使用了这个片段,只有当更新的单元格不是datetime类型时,它才会像魅力一样工作。
任何建议吗?

无法用新的日期时间值“代码优先”更新行

错误告诉您没有找到与UID匹配的记录,因此last为空。您需要检查它是否为空:

var last = ...;
if (last != null) {
    last.LastLogout = DateTime.Now;
    db.Entry(last).State = EntityState.Modified;
    db.SaveChanges();
}

或者,因为你在try/catch中这样做,你可以使用First而不是FirstOrDefault,并且只捕获First在没有找到记录时抛出的异常。

至于为什么last返回null,设置一个断点,并确保_uid是你所期望的。

看起来没有项满足您的筛选条件:您是否尝试从查询中删除"where"?