我的Entity Framework是否生成了两次SQL执行?

Tr1*_*tan 5 entity-framework sql-server-profiler sql-server-2008 automapper

我正在研究使用MS SQL 2008分析从Entity Framework 1生成的SQL的性能.

当我在SQL Server Profiler 2008中运行跟踪时,我注意到了一些我没想到的东西.对于每个执行的查询,我得到两个RPC:Completed语句,用a分隔exec sp_reset_connection statement.这是预期的行为吗?

SQL Server Profiler结果

Tr1*_*tan 5

答:是的

事实证明,这是导致我出现问题的AutoMapper中的一个“功能” 。

请参阅此处:映射IQueryable时,我在探查器中看到数据库被命中两次。

不幸的是,因为我使用的是1.1版(.net 3.5),所以它似乎无法修复。

解决方案:.ToList()在将IQueryable对象传递给方法之前,先对其进行调用Mapper.Map()。允许Mapper枚举对象会导致双重执行。