在我的 WebApi 项目中,我使用 EF6,遵循 Uow 和通用存储库模式,并且我还将我的模型映射到 dto,反之亦然。
目前我在创建时设置了以下内容dbContext
:
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
AsNoTracking
从数据库中获取数据时我也会使用。
更新数据库时,我在处理小实体(即没有关系)时直接使用 dbContext 来附加实体。我将 GraphDiff 用于复杂实体(即具有关系)。
当启用代理和跟踪,甚至禁用它们时,我注意到发送到数据库的 SQL 语句包括所有表的列,而不仅仅是那些实际更改的列。
但是,GraphDiff 在将更改保存到数据库之前再次加载实体。本例中的 SQL 语句还包含所有列。这是正确的行为吗?
那么,在我的场景中,在处理分离实体时禁用代理和跟踪是否安全?