5

MS SQL 2008 kullanarak, Entity Framework 1'den oluşturulan SQL'in performansını analiz etmeye çalışıyorum.Varlık Çerçevem ​​SQL'i iki kez yürütüyor mu?

SQL Server Profiler 2008'de bir izleme çalıştırdığımda, beklemediğim bir şey fark ettim. Yürütülen her sorgu için, bir exec sp_reset_connection statement ile ayrılan iki RPC:Completed ifadesi alırım. Beklenen davranış bu mu?

SQL Server Profiler Results

+0

Çalıştığınız kodu kaydeder misiniz? –

+0

@ajcvickers Çalıştığım sistem oldukça büyüktür, bu yüzden kodu tedarik etmek mümkün olmayacaktır, birlikte prototip almak biraz zaman alacaktır. Öyleyse bunu beklemenin o değil mi? – Tr1stan

+0

Varlıklar sorgusuna bir LINQ sorgusu her zaman (örn. ToList() ile) numaralandırıldığında, sorgu veritabanına karşı yürütülür. Bu olup olmadığını merak ediyordum. –

cevap

2

Cevap: Evet

O benim soruna neden oldu AutoMapper içinde "özelliği" olduğu ortaya çıkıyor.

Buraya bakın: When Mapping an IQueryable I see the database getting hit twice in my profiler.

onu düzelttirmek olacak gibi bu görünmüyor sürüm 1.1 (.net 3.5) kullanıyorum maalesef çünkü.

Çözüm: Mapper.Map() yöntem haline geçirmeden önce IQueryable nesne üzerinde çağrı .ToList(). Eşleyicinin nesneyi sıralamasına izin vermek, çift yürütmeye neden olur.