使用LINQ和ASP.NET保存对数据库的更改

时间:2014-03-03 16:30:40

标签: c# linq entity-framework

我有这个代码。代码将找到正确的日志,但不会将任何更改保存回数据库。我怎么能得到保存?

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");   

2 个答案:

答案 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实体类中有一个必填字段导致问题。虽然如果我只是更新而不是添加,为什么还需要再次设置?