我有下一个代码:
Guid[] sessions;
while ((sessions = GetSessions()).Any())
{
sessions.AsParallel().ForAll(ProcessSession);
}
...
private Guid[] GetSessions()
{
using (var tmpContext = new MyDbContext())
{
return (from pendingSession in tmpContext.PendingSessions
where !tmpContext.PendingFiles.Any(pf => pf.PendingSession.SessionId == pendingSession.SessionId)
select pendingSession.SessionId).ToArray()
}
}
我已经跟踪了使用 SQLServer Profiler 运行的代码,并认识到 EntityFramework 不会在 SQLServer 端执行 GetSessions 方法在每次调用该方法时的查询......我的意思是有时执行了 sql,有时 GetSessions 方法正在运行而不执行SQLServer 端的 sql 查询。它导致 ProcessSession 方法中的一些问题。
EntityFramwork 决定不执行查询的原因是什么,让它每次都运行的方法是什么?
谢谢,阿列克谢