【发布时间】:2019-07-31 05:02:15
【问题描述】:
在将 EF 结果映射到 DTO 时,在 EF 查询中添加 AsNoTracking 对性能有影响吗?
例如。
_context.Students.Where(x => x.age > 15).AsEnumerable().Select(x => ToDTO(x)).ToList();
对比
_context.Students.Where(x => x.age > 15).AsNoTracking().AsEnumerable().Select(x => ToDTO(x)).ToList();
【问题讨论】:
-
我怀疑它是否有效 - EF 如何将 ToDTO 转换为 SQL?但是,
AsNoTracking不会有任何效果,因为您返回 DTO 而不是实际上下文的类,EF 无法跟踪 DTO。 -
@SlavaUtesinov:这里的问题是 AsEnumerable() 方法,它实现了实体,因此上下文将设置更改跟踪。这意味着不必要的开销。
-
类似讨论here。您可以将您的问题标记为该问题的重复。
标签: .net entity-framework linq-to-sql ef-core-2.2