Var*_*azo 6 entity-framework-6
给出以下代码:
A。
using (var context = new testEntities())
{
context.tblAuthors.Select(p => new
{
Author_name = p.Author_name,
Id = p.Id,
country = p.country,
tblBooks = p.tblBooks.Select(z => new
{
Id = z.Id,
Auhthor_id = z.Auhthor_id,
Edition = z.Edition,
Price = z.Price
}).ToList()
}).ToList();
}
Run Code Online (Sandbox Code Playgroud)
B.
using (var context = new testEntities())
{
context.tblAuthors.Include(p => p.tblBooks).AsNoTracking().ToList();
}
Run Code Online (Sandbox Code Playgroud)
我在一个单独的循环中运行了 100 次迭代。第一个代码 (A) 的平均执行时间为 157 毫秒。第二个代码 (B) 的平均执行时间为 673 毫秒。
我的问题是:
1 - 为什么实体框架有这种差异?我认为 AsNoTracking() 应该与投影执行相同的操作,因为上下文在这两种情况下都没有跟踪实体。
2 - 如果我想获得最大性能,我应该对所有只读操作使用投影而不是 AsNoTracking() 吗?
更新 1:正在检索的数据量是相同的。我正在使用表格上的所有可用字段。实体框架生成的查询对于这两个代码是相同的。
| 归档时间: |
|
| 查看次数: |
776 次 |
| 最近记录: |