这是我的代码块
foreach(var n in animalbirdAdoptionDetails)
{
int animalBirdsId = n.AnimalsAndBirdsId;
int NoAnimal = Convert.ToInt32(n.NoAnimalsAdopted);
n.isActive = false;
context.NameOfAnimalsAndBirds.Update(e2 => new entity
{
quantity = e2.quantity + moreQuantity
});
context.SaveChanges();
}
DbSet'不包含'Update'的定义,并且找不到可访问的扩展方法'Update'接受类型为'DbSet'的第一个参数(您是否缺少using指令或程序集引用?)
答案 0 :(得分:1)
您遇到此错误,因为在实体框架中没有可用的更新扩展方法。
如果要更新现有记录,则需要通过主键引用或任何其他表字段引用来检索现有记录。 并将新值分配给表格字段。
例如。
foreach(var n in animalbirdAdoptionDetails)
{
// remove unwanted variables and casting expression.
// if not required then.
int animalBirdsId = n.AnimalsAndBirdsId;
int NoAnimal = Convert.ToInt32(n.NoAnimalsAdopted);
n.isActive = false;
// Retrieve existing record
var entity = context.NameOfAnimalsAndBirds.FirstOrDefault(x => x.Id == n.Id);
// assign new value to existing property.
entity.quantity = entity.quantity + moreQuantity;
// in last just apply save changes.
context.SaveChanges();
}
注意:上面的代码仅用于演示。最好一次更新所有实体并应用保存更改(从循环外部)。
答案 1 :(得分:0)
foreach(var n in animalbirdAdoptionDetails)
{
int animalBirdsId = n.AnimalsAndBirdsId;
int NoAnimal = Convert.ToInt32( n.NoAnimalsAdopted);
n.isActive = false;
// Retrieve existing record into your model class
NameOfAnimalsAndBird model = context.NameOfAnimalsAndBirds.Find(n.Id);
model.quantity = model.quantity + moreQuantity;
context.SaveChanges();
}