我正在运行一些校正代码,这些校正代码在大量实体上运行,随着它的速度降低,这是因为在上下文中跟踪的实体的数量随着每次迭代的增加而增加,这可能需要很长时间,因此我在最后保存更改每次迭代。每次迭代都是独立的,并且不会更改先前加载的实体。
我知道我可以关闭变更跟踪,但我不想这样做,因为它不是批量插入代码,而是加载实体并计算一些事情,如果数字不正确,请设置新数字并更新/删除/创建一些其他实体。我知道我可以为每个迭代创建一个新的DbContext,并且可能比在同一实例中执行所有操作要快,但我认为可能会有更好的方法。
所以问题是;有没有一种方法可以清除以前在db上下文中加载的实体?
context.Entry(entity).State = EntityState.Detached
,它将停止跟踪该特定实体。