C# 从数据库中删除Linq列表
我有一个可以储存订单的数据库。我想获取金额大于0的所有订单,然后将数据库中的金额设置为0。问题是,当我想在数据库中设置值时,当前所选订单的值也会被覆盖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
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()代码>