编辑
查询是正确的,我得到的错误是由于下面的注销fx被调用了两次,一次来自html href,另一次是来自ajax。 ajax调用具有UID,而Html为null,因此引发了异常 - 后来调用了html。感谢您的投入。由于我是stackoverflow的新手,我不知道如何处理答案/评论,因为它们没事。
如何使用新的日期时间值更新行?
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() - >错误:对象引用未设置为对象的实例。
当我使用First() - >错误:序列不包含任何元素。
好吧,数据库有几条记录。我已经在某个地方使用了这个片段,它就像魅力一样,只有当更新的单元格不是日期时间类型时。
有什么建议吗?
答案 0 :(得分:1)
错误告诉您没有找到匹配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
符合您的预期。
答案 1 :(得分:1)
看起来没有项目满足您的过滤条件:其中l.UID.Equals(_uid) 您是否尝试从查询中删除“where”?