c# 实体框架 - blazor 应用程序 - ChangeTracker

问题描述 投票:0回答:1

我在 blazor 应用程序中使用实体框架。我的上下文是有范围的。

我有一个带有修改属性的跟踪实体,但我取消了修改。该实体仍被跟踪,跟踪器仍包含已取消的修改。

如果我使用 savechanges,取消的修改将传播到数据库中。

如何避免这种情况? (改变实体的状态,使其不被修改?)

谢谢您的回答。

c# entity-framework blazor tracking
1个回答
0
投票

DbContext 是一个设计寿命极短的类。

您应该为每个操作(或一批操作)创建一个新的 DbContext,并在其之后立即将其释放。如果您不这样做,那么您最多只是在代码中引入了内存泄漏,最坏的情况就是您正在编写的不需要的且难以调试的行为。

如果您需要一些优化,您可以引入 DbContext 池,通过处理上下文来清理实体跟踪,但保持 DbConnection 实例处于活动状态(建立连接是缓慢的部分)

© www.soinside.com 2019 - 2024. All rights reserved.