Birden çok eşzamansız Entity Framework sorgusu başlattığımızda ve bunları paralel olarak çalıştırdığınızda ne olur?Entity Framework paralel eşzamanlı sorguları destekliyor mu?
Fiziksel olarak paralel olarak yürütülürler mi? Entity Framework tarafından serileştiriliyorlar mı? Bu desteklenmiyor mu? Bir istisna ile sonuçlanır mı?
public async Task QueryDatabase()
{
using (var context = new MyDbContext())
{
Task task1 = context.SomeTable1.ToListAsync();
Task task2 = context.SomeTable2.ToListAsync();
await Task.WhenAll(task1, task2);
}
}
Doğruluktan dolayı, Codeplex snippet'ini yazan kişiyi reddedebilirdim. İyi bir sorgu neredeyse tümüyle çoklu CPU ve çoğu durumda ağa bağlı olan db'ye bir vuruştur. Db paralel async çağrıları bir demet atma NO iş parçacığı kullanır! http://blog.stephencleary.com/2013/11/there-is-no-thread.html Tüm sorgular .AsNoTracking() ise, EF'in bunu desteklemesi önemsiz olmalıdır, ancak yine de bu istisnayı atar. –
@ChrisMoschini Son cümlenin EF'ye değil SQL Server'a itirazda olduğundan eminim. –
@ErikPhilips Ne demek istediğinizden emin değil misiniz? –