在处理实体时,需要确保只有一个实例具有相同的关键值。可以使用以下代码解决该问题:
在获取实例时,使用无跟踪查询:
var pizza = context.Pizzas.AsNoTracking().SingleOrDefault(p => p.Id == _id);
或者,使用同时跟踪多个实例的方法:
var local = context.Set()
.Local
.FirstOrDefault(entry => entry.Id.Equals(_id));
if (local != null)
{
context.Entry(local).State = EntityState.Detached;
}
var pizza = new Pizza { Id = _id };
context.Entry(pizza).State = EntityState.Modified;
这将使上下文不再跟踪先前的实例,并允许您修改现有实例。
上一篇:Asp.netAPI未出现