修复 Entity Framework 内的删除问题
Fixing an issue of deletion within Entity Framework
我有这个方法:
public async void Delete(params T[] items)
{
using (var context = new DataEntities())
{
foreach (T item in items)
{
context.Entry(item).State = System.Data.Entity.EntityState.Deleted;
}
await context.SaveChangesAsync();
}
}
当我试图删除一个项目时:
dpc_participant part = (await SimpleIoc.Default.GetInstance<ICrud<dpc_participant>>().Search(x => x.dpc_id_participant_pk == currentitem.dpc_id_participant_pk && x.dpc_id_fk == currentitem.dpc_id_pk)).FirstOrDefault();
SimpleIoc.Default.GetInstance<ICrud<dpc_participant>>().Delete(part);
我遇到了这个错误
entity object cannot be referenced by multiple instances of IEntityChangeTracker.
问题:
- 这个错误的原因是什么?
- 我该如何解决?
发生这种情况是因为您的 items 变量连接到与您的函数正在使用的上下文不同的上下文。
要修复,要么将您检索项目时使用的原始上下文传递到此函数中并使用它,要么使用函数中的新上下文重新查询它们,然后删除。
我有这个方法:
public async void Delete(params T[] items)
{
using (var context = new DataEntities())
{
foreach (T item in items)
{
context.Entry(item).State = System.Data.Entity.EntityState.Deleted;
}
await context.SaveChangesAsync();
}
}
当我试图删除一个项目时:
dpc_participant part = (await SimpleIoc.Default.GetInstance<ICrud<dpc_participant>>().Search(x => x.dpc_id_participant_pk == currentitem.dpc_id_participant_pk && x.dpc_id_fk == currentitem.dpc_id_pk)).FirstOrDefault();
SimpleIoc.Default.GetInstance<ICrud<dpc_participant>>().Delete(part);
我遇到了这个错误
entity object cannot be referenced by multiple instances of IEntityChangeTracker.
问题:
- 这个错误的原因是什么?
- 我该如何解决?
发生这种情况是因为您的 items 变量连接到与您的函数正在使用的上下文不同的上下文。
要修复,要么将您检索项目时使用的原始上下文传递到此函数中并使用它,要么使用函数中的新上下文重新查询它们,然后删除。