我有这个代码。代码将找到正确的日志,但不会将任何更改保存回数据库。我怎么能得到保存?
var query = from log in db.Logs
where log.LogID == id
select log;
foreach (Log log in query)
{
log.DateTimeResolved = System.DateTime.Now;
db.Entry(query).State = EntityState.Modified;
}
try
{
db.SaveChanges();
}
catch (Exception e)
{ }
return RedirectToAction("Index");
答案 0 :(得分:1)
嗯,很难说因为你忽略了任何抛出的异常,但这看起来很可疑:
foreach (Log log in query)
{
log.DateTimeResolved = System.DateTime.Now;
db.Entry(query).State = EntityState.Modified;
} ^--- should be "log" instead of "query"?
我的猜测是,因为Entry()
接受一个对象编译,但在运行时你会收到一个错误并忽略它。如评论中所述,您不需要将状态显式设置为Modified
,因为您直接修改了实体。我想你只需要:
foreach (Log log in query)
{
log.DateTimeResolved = System.DateTime.Now;
}
答案 1 :(得分:0)
我的Log实体类中有一个必填字段导致问题。虽然如果我只是更新而不是添加,为什么还需要再次设置?