Aracılığıyla paylaş


LINQ'de Hata Ayıklama

Visual StudioTümleşik hata ayıklama dili destekler (LINQ) kodu, bazı kısıtlamalar ile sorgu. LINQ ifadelerle ilerlemeye, kesme noktalarını ayarlama ve hata ayıklayıcısı windows sonuçları görüntüleme dahil olmak üzere en hata ayıklama özellikleri çalışır.Bu konu LINQ hata ayıklama ana kısıtlamaları açıklar.

Bu Konuda

LINQ sonuçlarını görüntüleme

Adımlamak ve LINQ

Düzenle ve devam etmek için LINQ desteklenmiyor

LINQ sonuçlarını görüntüleme

DataTips, izleme penceresi ve QuickWatch iletişim kutusunu kullanarak bir LINQ ifadesi sonucunu görüntüleyebilirsiniz.Bir kaynak penceresini kullandığınızda, kaynak penceresini sorguda işaretçisini duraklatabilirsiniz ve bir DataTip görünür.LINQ değişkeni kopyalamak ve İzleme penceresi veya QuickWatch iletişim kutusu yapıştırın.

LINQ, oluşturulduğunda veya bildirilmiş, ancak yalnızca sorgu kullanıldığında sorgu hesaplanan değil.Bu nedenle, sorgu ifadesine hesaplanmadan kadar bir değer yok.Sorgu oluşturma ve değerlendirme tam açıklama için bkz LINQ Sorgularına Giriş (C#) veya İlk LINQ Sorgunuzu Yazma (Visual Basic).

Bir sorgunun sonucu görüntülemek için hata ayıklayıcısı, hesaplanmalıdır.Hata Ayıklayıcı'LINQ Sorgu sonucu görüntülediğinizde oluşan, bu örtük değerlendirme düşünmelisiniz bazı etkilere sahiptir:

  • Sorgunun her değerlendirme sürüyor.Sonuçları düğümünü genişleterek zaman alır.Bazı sorgular için yinelenen değerlendirme içinde bir fark performans cezası neden olabilir.

  • Bir sorgu değerlendirme veri veya programınızın durumunu değerini yapılan değişiklikler yan etkileri neden olabilir.Tüm sorguları yan etkileri olabilir.Bir sorgu güvenle yan etkileri değerlendirilmesi olup olmadığını belirlemek için sorgu uygulayan kodunu anlamalısınız.

Adımlamak ve LINQ

LINQ kod ayıklarken ilerlemeye hakkında bilmeniz davranış bazı farkları vardır.

LINQ - SQL

LINQ to SQL sorguları, koşul hata ayıklayıcısı denetimi ötesine kodudur.Bu nedenle, koşul koda adım olamaz.Bir ifade ağacına derler herhangi bir sorgu hata ayıklayıcısı denetimdir kodu oluşturur.

Visual Basic ilerlemeye

Bir Visual Basic programı ilerlemeye ve bir sorgu bildirimi hata ayıklayıcısı karşılaşırsa, bildirimi içine adım değil ancak tek bir ifadesi olarak tüm bildirimi vurgulamaktadır.Bu davranış yöntemiyle çağrılır kadar sorgu değerlendirilmez nedeniyle oluşur.Daha fazla bilgi için bkz. Visual Basic'de LINQ'e Giriş.

Aşağıdaki kod örneği adım, hata ayıklayıcısı sorgu bildirimi ya da tek bir ifadesi olarak sorgu oluşturma vurgulamaktadır.

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ımladığınızda hata ayıklayıcısı vurgulamaktadır For Each cur In x.İsteğe bağlı olarak bir sonraki adımında işlevdeki adımları MyFunction.Doğruluk sonra MyFunction, onu tekrar atlar Console.WriteLine(cur.ToSting()).Hata ayıklayıcısı bu kodu değerlendirme olsa da herhangi bir noktada, sorgu bildiriminde koşul kodlarla adım.

Bir koşul Adımlama (Visual Basic) etkinleştirmek için bir işlev ile değiştirme

Varsa, hata ayıklama amacıyla koşul kodlarla adım için özgün doğrulama kodu içeren bir işlev çağrısı koşul yerine kullanabilirsiniz.Örneğin, bu kodu 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

Koşul kod adında bir yeni işlevi taşıyabilirsiniz 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

Düzeltilen sorgu işlev çağrıları IsEven her geçişte items.Her bir öğe belirtilen koşulu karşılıyor ve koddaki üzerinden adım olup olmadığını görmek için hata ayıklayıcısı windows kullanabilirsiniz IsEven.Bu örnekte koşul oldukça basittir.Ancak, hata ayıklamak için sahip daha zor bir koşul varsa, bu teknik çok yararlı olabilir.

Düzenle ve devam etmek için LINQ desteklenmiyor

Düzenle ve devam et LINQ sorgularını değişiklikleri desteklemez.Ekle, Kaldır veya bir LINQ ifadesi sırasında bir hata ayıklama oturumunu değiştirme, değişiklik düzenle ve devam et tarafından desteklenmeyen bildiren bir iletişim kutusu görüntülenir.Bu noktada ya da değişiklikleri geri veya hata ayıklama oturumunu durdurma ve düzenlenen kodu ile yeni bir oturum yeniden başlatabilirsiniz.

Ayrıca, Düzenle ve devam türü veya bir LINQ ifadesinde kullanılan bir değişken değerinin değiştirilmesini desteklemiyor.Yeniden ya da değişiklikleri geri veya durdurabilir ve hata ayıklama oturumunu yeniden başlatın.

C# ' ta, Düzenle ve devam et üzerinde herhangi bir LINQ Sorgu içeren bir yöntem kodda kullanamazsınız.

Visual Basic, LINQ kodda bile LINQ sorgusu içeren bir yöntem üzerinde Düzenle ve devam et kullanabilirsiniz.Ekleyebilir ya da LINQ ifadesi önce kod değişiklikleri LINQ Sorgu satır sayısı etkileyen olsa bile kaldırabilirsiniz.LINQ tanıtıldı önceki deneyimi LINQ kodu için hata ayıklama Visual Basic aynı kalır.Değiştirme, ekleyemez veya değişiklikleri uygulamak için hata ayıklamayı durdurmak istiyor sürece LINQ sorgusu, ancak kaldırın.

Ayrıca bkz.

Kavramlar

Yan Etkiler ve İfadeler

Özel Durum İşleme (Hata Ayıklama)

LINQ Sorgularına Giriş (C#)

Visual Basic'de LINQ'e Giriş

Diğer Kaynaklar

Debugging SQL