LINQ hata ayıklama
Visual StudioTümleşik hata ayıklama dilini destekler (LINQ) koduyla ilgili bazı sınırlamalar sorgu. Çoğu hata ayıklama özellikleri LINQ deyimleri, atlama, kesme ayarını ve hata ayıklama pencerelerinde sonuçları görüntüleme gibi çalışır. Bu konuda hata ayıklama LINQ önemli sınırlamalar açıklanmıştır.
Bu Konuda
Hata ayıklayıcıda LINQ sorgu sonuçlarını görüntülediğinizde göz önünde bulundurulması gereken özel durumlar açıklanır. |
|
LINQ hata ayıklama sırasında sürüm davranış açıklanır. |
|
LINQ kod hata ayıklaması yaptığınız sırada düzenlemek deneyin görmek beklediğiniz durumu açıklıyor. |
LINQ sonuçlarını görüntüleme
LINQ ifadesinin sonucu DataTips ve Gözcü penceresine QuickWatch iletişim kutusunu kullanarak görüntüleyebilirsiniz. Kaynak penceresini kullandığınızda sorgunun kaynak penceresinde işaretçiyi duraklatabilirsiniz ve bir DataTip görünür. LINQ değişkeni kopyalamak ve Gözcü penceresi veya QuickWatch iletişim kutusuna yapıştırın.
LINQ içinde bir sorgu oluşturulduğunda veya bildirilen, ancak sorgu kullanıldığında değerlendirilir değildir. Bu nedenle, sorgu Değerlendirilmiş kadar değeri yok. Sorgu oluşturma ve değerlendirme tam açıklaması için bkz: Giriş LINQ sorguları (C#) veya İlk LINQ sorgunuzu (Visual Basic) yazma.
Sorgu sonuçlarını görüntülemek için hata ayıklayıcı, değerlendirmelidir. Hata ayıklayıcıda LINQ sorgu sonucu görüntülediğinizde oluşan bu örtülü değerlendirme göz önünde bulundurmanız gerekir bazı efektleri vardır:
Sorgunun her değerlendirme sürüyor. Sonuçları düümünü genileterek sürüyor. Bazı sorgular için yinelenen değerlendirme dikkat çekici bir performans sorunu neden olabilir.
Bir sorguyu değerlendirmek değişiklikler veri veya programınızın durumu değeri için yan etkilere neden olabilir. Tüm sorgular yan etkileri vardır. Sorgu güvenle yan etkileri değerlendirilecek olup olmadığını belirlemek için query uygulayan kod anlamanız gerekir.
Stepping ve LINQ
LINQ kodu ayıklanırken atlama hakkında bilmeniz gereken bazı davranış farklılıkları vardır.
LINQ to SQL
sql sorguları LINQ doðrulama hata ayıklayıcı denetimi ötesine kodudur. Bu nedenle, doðrulama kodunu adım olamaz. Bir ifade ağaç derler herhangi bir sorgu hata ayıklayıcı denetimi dışında bir kod üretir.
Visual Basic'te atlama
Visual Basic programı adım atma ve sorgu bildirimi hata ayıklayıcı karşılaştığında, bildirimi adım değil ancak tüm bildirimi tek bir ifadesi olarak vurgular. Bu davranış, onu çağrılıncaya kadar sorgu değerlendirilmez oluşur. Daha fazla bilgi için bkz. LINQ Visual Basic giriş.
Aşağıdaki kod örneği adım, hata ayıklayıcı sorgu bildirimi veya sorgu oluşturma, tek bir ifadesi olarak vurgular.
Function MyFunction(ByVal x As Char)
Return True
End Function
Sub Main()
'Query creation
Dim x = From it In "faoaoeua" _
Where MyFunction(it) _
Select New With {.a = it}
' Query execution
For Each cur In x
Console.WriteLine(cur.ToString())
Next
End Sub
Yeniden adım, hata ayıklayıcı vurgular For Each cur In x. Sonraki adımda, işlevdeki adımları MyFunction. Arasında atlama sonra MyFunction, geri atlar Console.WriteLine(cur.ToSting()). Hata ayıklayıcının kodun da hiçbir noktada onu üzerinden sorgu bildiriminde doðrulama kodunu adım.
Sürüm (Visual Basic) etkinleştirmek için bir işlev bir yüklemi değiştirme
Varsa, hata ayıklama amacıyla doðrulama kodunu gözden geçirmek için yüklemi özgün doðrulama kodunu içeren bir işlev çağrısı ile değiştirebilirsiniz. Örneğin, bu kod olduğunu varsayalım:
Dim items() as integer ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
' Get the even numbers
Dim query = From nextInt in items Where nextInt Mod 2 = 0 Select nextInt
For each item in query
Console.WriteLine(item)
Next
Doðrulama kod adlı yeni bir işleve taşıma IsEven:
Dim items () as integer ={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
' Get the even numbers
Dim query = From nextInt in items Where IsEven(nextInt) Select nextInt
For each item in query
Console.WriteLine(item)
Next
...
Function IsEven(item As =Integer) as Boolean
Return item Mod 2 = 0
End Function
Değiştirilen sorgu işlevini çağırır IsEven her geçişte items. Her madde belirtilen koşula uyan ve kod aracılığıyla adım görmek için hata ayıklayıcı windows kullanmak IsEven. Bu örnekte kullanımı oldukça basittir. Ancak, hata ayıklama olması daha zor bir yüklemi varsa, bu tekniği çok yararlı olabilir.
Düzenle ve devam etmek için LINQ desteklenmiyor
Düzenle ve devam et, değişiklikleri LINQ sorgularını desteklemez. Eklemek, kaldırmak veya bir hata ayıklama oturumu sırasında LINQ ifadesini değiştirin, Değiştir, Düzenle ve devam et tarafından desteklenmiyor bildiren bir iletişim kutusu görüntülenir. Bu noktada ya da değişiklikleri geri almak veya hata ayıklama oturumunu durdurmak ve düzenlenen kod ile yeni bir oturum yeniden başlatabilirsiniz.
Buna ek olarak, düzenleme ve devam türü veya LINQ deyiminde kullanılan bir değişkenin değerini değiştirmeyi desteklemiyor. Yeniden ya da değişiklikleri geri almak veya durdurabilir ve hata ayıklama oturumu yeniden başlatın.
C#, Düzenle ve devam et herhangi bir kod LINQ sorgu içeren bir yöntem kullanamazsınız.
Visual Basic'te, Düzenle ve devam et LINQ kodu, hatta LINQ sorgu içeren bir yöntem kullanabilirsiniz. Ekleme veya değişiklikler LINQ sorgusu satır sayısını etkiler bile LINQ ifadesi önce kodu kaldırın. Visual Basic hata ayıklama deneyimini LINQ kodu için LINQ kullanılmaya başlanmasından önce olduğu gibi aynı kalır. Değiştirme ekleme veya değişiklikleri uygulamak için hata ayıklamayı durdurmak istediğiniz bir LINQ sorgu ancak kaldırmanın olamaz.
Ayrıca bkz.
Kavramlar
Özel durum işleme (hata ayıklama)