1

我正在使用 EF 4.5 并且必须获取一些记录并更新已获取记录的标志。我可以在相同的情况下这样做吗?

using (var context = new MyDBEntities())
{
   var qry = from a in context.Table1
             select a;
   foreach(var item in qry)
   {
        // Logic to fill custom entity (DTO) from qry
        item.Fetched = 2; // Changing the status of fetched records in DB
        context.Table1.Add(item);
   }
   context.SaveChanges();
}
4

1 回答 1

2

你可以。你必须,甚至。上下文必须在其更改跟踪器中包含您修改的对象。这就是查询 ( qry) 中发生的情况。然后修改它们,更改跟踪器在SaveChanges()调用时检测更改并生成更新语句并将其发送到数据库。

唯一的事情是,你不应该这样

context.Table1.Add(item);

因为这会创建新Table1记录,所以它不会更新现有记录。只需删除该声明。

(顺便说一句,还有其他方法可以使上下文开始更改跟踪,即将对象附加添加到上下文)。

于 2013-06-07T11:27:01.547 回答