【发布时间】:2015-09-10 20:47:17
【问题描述】:
我需要更新多条记录,这就是我能做到的程度
首先,我尝试了这个
foreach (var Product in Products)
{
Product.Price = Price;
db.Entry(Product).State = EntityState.Modified;
db.SaveChanges();
}
但是,我收到了这个错误
存储更新、插入或删除语句影响了意外数量的行 (0)。自加载实体后,实体可能已被修改或删除。刷新 ObjectStateManager 条目。
然后,我找到this 的答案,说我应该为每次迭代创建新实例,但我得到了同样的错误。以下是我的尝试。
foreach (var Product in Products)
{
var ProductInLoop = new Product();
ProductInLoop.Price = Product.Price;
db.Entry(ProductInLoop).State = EntityState.Modified;
db.SaveChanges();
}
我也不能在循环外这样做db.Entry(Products).State = EntityState.Modified;,因为Entry() 需要一个单独的对象。
我该如何解决这个问题?
【问题讨论】:
-
你为什么循环通过
Products却重复设置ProductSize或ProductInLoop的值并忽略循环变量Product? -
你为什么要在你的循环中创建新的
Products?你想更新现有的,对吧? -
谢谢@BenRobinson,问题就像你说的那样,它是主键= 0,谢谢你我解决了。关于
ProductSize,我实际上是在更新ProductSize,而不是Product,但我删除了所有不相关的代码,试图简化/专注于问题,但我忘了改。 -
请在循环外调用 savechanges 只调用一次
标签: c# asp.net-mvc entity-framework