Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从数据库中删除Linq列表_C#_Entity Framework_Linq - Fatal编程技术网

C# 从数据库中删除Linq列表

C# 从数据库中删除Linq列表,c#,entity-framework,linq,C#,Entity Framework,Linq,我有一个可以储存订单的数据库。我想获取金额大于0的所有订单,然后将数据库中的金额设置为0。问题是,当我想在数据库中设置值时,当前所选订单的值也会被覆盖 var order = db.Orders .Where(x => x.Amount > 0) .ToList(); //all Orders with an Amount > 0 db.Orders .Where(x => x

我有一个可以储存订单的数据库。我想获取金额大于0的所有订单,然后将数据库中的金额设置为0。问题是,当我想在数据库中设置值时,当前所选订单的值也会被覆盖

var order = db.Orders
              .Where(x => x.Amount > 0)
              .ToList();                //all Orders with an Amount > 0

 db.Orders
   .Where(x => x.Amount > 0)
   .ToList()
   .ForEach(x => x.Amount = 0);        //after this line the Amount of the Orders in my List is 0

是否可以从数据库中“删除”列表,以便我在列表中保留原始金额。

正如@IvanStoev提到的,您可以使用
AsNoTracking()
告诉
entityframework
不要监视您的第一次查询

var order = db.Orders
          .Where(x => x.Amount > 0)
          .AsNoTracking()
          .ToList();             

 db.Orders
   .Where(x => x.Amount > 0)
   .ToList()
   .ForEach(x => x.Amount = 0);    

或者,您可以使用不同的
DbContext
实例进行查询。

这不是问题,这是一个功能:),但实际上,在检索第一个列表时,您可以不使用跟踪查询,例如
var order=db.Orders.AsNoTracking()。其中(…).ToList()