我在 blazor 应用程序中使用实体框架。我的上下文是有范围的。
我有一个带有修改属性的跟踪实体,但我取消了修改。该实体仍被跟踪,跟踪器仍包含已取消的修改。
如果我使用 savechanges,取消的修改将传播到数据库中。
如何避免这种情况? (改变实体的状态,使其不被修改?)
谢谢您的回答。
DbContext 是一个设计寿命极短的类。
您应该为每个操作(或一批操作)创建一个新的 DbContext,并在其之后立即将其释放。如果您不这样做,那么您最多只是在代码中引入了内存泄漏,最坏的情况就是您正在编写的不需要的且难以调试的行为。
如果您需要一些优化,您可以引入 DbContext 池,通过处理上下文来清理实体跟踪,但保持 DbConnection 实例处于活动状态(建立连接是缓慢的部分)