EntityFramework 4 - 更新foreach中的记录

时间:2012-01-04 12:26:46

标签: c# entity-framework-4 dbcontext

我正在创建一个使用EF4和DBContext访问后端数据库的应用程序。

在应用程序的某一点上,我拉回一组记录并迭代它们,更新值和时间戳。

代码:

// update any notified parameters...
foreach (RecvParam parameter in RecvParameters)
{
    // get the existing parameter
    Data.DeviceParameter dbParameter = this.device.DeviceParameters.SingleOrDefault(x => x.Name == parameter.Name);

    // null check
    if (dbParameter == null)
        continue;

    // update an existing parameter instance
    dbParameter.Value = parameter.Value;
    dbParameter.UpdatedOn = DateTime.Now;

    // add an entry to the context
    DBContext.Entry(dbParameter).State = EntityState.Modified;        
}

DBContext.SaveChanges();

当我这样做时,我的数据库值不会改变...时间戳和值字段保持不变。

有人可能会指出我正确的方向......?

1 个答案:

答案 0 :(得分:2)

实际上,不需要手动更新实体的状态。修改附加到上下文的实体的属性可以为您完成工作。

无论如何,如果device是您的数据库上下文,则必须在其上调用SaveChanges