2011-10-26 20 views
8

SQL iletişim için Entity Framework kullanırken garip bir tepki süresi yaşıyorum. Bu benim web barındırma danVarlık Framework SQL hata ayıklama SQL ifadeleri

:

enter image description here

Bu benim yerel sunucudan geçerli:

enter image description here

Endişelendiğim duyuyorum tepki süresi artış var. Sorunu Nop.Data> EfRepository.cs> public void Ekleme (T varlık)> _entities.Add (varlık) kodunda tek bir satıra kadar daraltdım; Evet, NopCommerce için bu kadar spesifik olduğunu biliyorum, ancak asıl mesele, bunun nasıl hata ayıklanacağı konusunda yardım arıyorum.

Yürütülen SQL'i görüntüleyebildiğim bazı olaylar var mı? Veya yukarıdaki komutta Varlık Çerçevesinde gerçekleşmekte olan şeyleri öğrenmek için başka neler yapabilirim? EF sorguları ayıklama için

cevap

21

, en kolay şey ObjectQuery sorgu döküm ve kullanımı ToTraceString geçerli:

var query = myContext.MyTable 
    .Where(r => r.Id == searchId) 
    .Select(r => r); 

Console.WriteLine(((ObjectQuery)query).ToTraceString()); 

Bu sorgu için altta yatan SQL gösterecektir ve neden hata ayıklamak için elle sorgulama yapabilirsiniz yavaşlar.

http://msdn.microsoft.com/en-us/library/system.data.objects.objectquery.totracestring.aspx

size bağlamına() SaveChanges çağırdığınızda çalıştırılan SQL almak için çalışıyorsanız, o kadar kolay değil: İşte MSDN bağlantıdır. Sen EFTracingProvider bakmak olabilir: SQL Server kullanan varsayarak

http://blogs.msdn.com/b/jkowalski/archive/2009/06/11/tracing-and-caching-in-entity-framework-available-on-msdn-code-gallery.aspx

Veya, (bu benim tercih yaklaşımdır) SQL Profiler doğrudan gitmek ve T-SQL ifadelerini yakalayabilir.

+0

Teşekkür ederim, çünkü ilkini deneyeceğim çünkü SaveChanges() çağrısı o kadar zaman almıyor gibi görünüyor, en azından yazdığım satır zaman aldı. Sunucudaki kısıtlamalar nedeniyle Profiler (denedim) kullanamıyorum. – Anders

+0

Sorunun bir kısmının, nesnelerin belirli sınıflara dökülmesiyle ilgili kodun içinde olduğunu öğrendim. Yani sorun muhtemelen SQL ile ilgili değildi – Anders