这是我的代码块
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”的定义,并且找不到接受“DbSet”类型的第一个参数的可访问扩展方法“Update”(您是否缺少 using 指令或程序集引用?)
您遇到此错误是因为在实体框架中没有可用的 update 扩展方法。
如果您想更新现有记录,则需要通过主键引用或任何其他表字段引用来检索现有记录。 并向表字段分配新值。
例如。
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();
}
注意:以上代码仅供演示。立即更新所有实体并应用保存更改(从循环外部)始终是一个好习惯。
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();
}
如果您已经有权访问实体对象,则可以将该对象附加到上下文并更改其要修改的状态。然后当您调用 SaveChanges 时,实体将被更新。
context.NameOfAnimalsAndBirds.Attach(entity);
var entityEntry = context.Entry<NameOfAnimalsAndBird>(entity);
entityEntry.State = System.Data.Entity.EntityState.Modified;
context.SaveChanges();