Aracılığıyla paylaş


Nasıl yapılır: kod kullanarak bir sorgu genişletin

Bir sorguda, sorgu tasarımcısının özellikleri dışında bir değişiklik yapmak isterseniz, sorguyu kod yazarak genişletebilirsiniz.

Visual Studio LightSwitch, sorgu sonucunu üretmek için sorgu tasarımcısında belirlediğiniz koşullarla kodda belirlediğiniz koşulları birleştirir.Daha fazla bilgi için bkz. Sorgu: Bir veri kaynağındaki bilgileri alınıyor.

[!NOT]

Ekran sorgusunu genişletemezsiniz.Sadece Çözüm Gezgini'nde görünen sorguları genişletebilirsiniz.Ekran sorgusu düzenleme hakkında daha fazla bilgi için bkz: Nasıl yapılır: Silverlight Ekranında Verileri Filtreleme.

Kod kullanarak bir sorguyu genişletmek için

  1. Sorgu Tasarımcısı'nda bir sorgu açın.Daha fazla bilgi için bkz. Nasıl yapılır: ekleme, kaldırma ve bir sorguyu değiştirin.

  2. Özellikler penceresinden Ek Sorgu Kodunu Düzenle'yi tıklatın.

    Kod Düzenleyici'de sunucu kod dosyası açılır.Sorgunuzu temsil eden bir yöntem, kod dosyasında görüntülenir.Yöntemin adı sorgunuzu adıyla başlar ve _PreprocessQuery sözcüğü ile sona erer.Örneğin sorgunuzun adı GetCustomers ise Kod Düzenleyicisinde görüntülenen yöntem adı GetCustomers_PreprocessQuery şeklindedir.

  3. Kodu bu yönteme ekleyerek sorguyu özelleştirin.LINQ sözdizimini kullanın.Visual Basic'de LINQ sorguları yazımı hakkında daha fazla bilgi için, bkz. Visual Basic'te LINQ ile çalışmaya başlama.C# kullanarak sorguların nasıl yazılacağı hakkında daha fazla bilgi için bkz. C# [NULL]'taki LINQ ile çalışmaya başlama.

Örnekler

Aşağıdaki örnekler, kod kullanarak bir sorguyu değiştirmek için iki yol gösterir.

Ff852040.collapse_all(tr-tr,VS.110).gifSatış Siparişlerine Göre İlk N Müşterileri

Aşağıdaki sorgu, en çok sipariş veren müşterileri döndürür.TopN adlı bir parametre yönteme geçirilir.TopN parametresi sonuç içinde döndürülecek müşteri sayısını belirtir.

[!NOT]

Sorgu tasarımcısına parametreleri ekleyin.

Private Sub TopNSalesOrders_PreprocessQuery _
    (ByVal TopN As System.Nullable(Of Short), _
     ByRef query As System.Linq.IQueryable(Of LS_Queries_VB.Customer))
    query = From myCustomer In query
           Where myCustomer.Orders.Count > 0
           Select myCustomer
           Order By myCustomer.Orders.Count Descending
           Take (TopN)
End Sub
partial void TopNSalesOrders_PreprocessQuery
    (short? TopN, ref IQueryable<Customer> query)
{
    query = (from myCustomer in query
             where myCustomer.Orders.Count() > 0
             orderby myCustomer.Orders.Count() descending
             select myCustomer).Take(System.Convert.ToInt16(TopN));
}

Bu sorguyu, aşağıdaki nedenlerle sorgu tasarımcısını kullanarak tasarlayamazsınız:

  • Siparişler, müşteri-siparişi ilişkisinin pek çok tarafında görünür.Sorgu tasarımcısı, birden fazla çokluk içeren ilgili varlıklara başvuru yapmanızı engeller.

  • Sorgu, Count işlemini kullanarak siparişleri sayar.Sorgu tasarımcısı Count, Aggregate ve Sum gibi işlemlerin kullanımını desteklemez.

Ff852040.collapse_all(tr-tr,VS.110).gifBelirli Bir Ürünü Satın Almış Tüm Müşteriler

Aşağıdaki sorgu, çeşitli bire çok ilişki içinde gezinerek belirli bir ürünü satın almış tüm müşterileri döndürür.

Private Sub CustomersWhoBoughtProduct_PreprocessQuery _
    (ByVal ProductID As System.Nullable(Of Short), _
     ByRef query As System.Linq.IQueryable(Of LS_Queries_VB.Customer))
    query = From myCustomers In query
        From myOrders In myCustomers.Orders
        From myOrderDetails In myOrders.Order_Details
        Where myOrderDetails.Product.ProductID = ProductID
        Select Customers
End Sub
partial void CustomersWhoBoughtProduct_PreprocessQuery
    (short? ProductID, ref IQueryable<Customer> query)
{
    query = from myCustomers in query
            from myOrders in myCustomers.Orders
            from myOrderDetails in myOrders.Order_Details
            where myOrderDetails.Product.ProductID == ProductID
            select myCustomers;
}

Sorgu tasarımcısı, birden fazla çokluk içeren ilgili varlıklara başvuru yapmanızı engelleyeceğinden, bu sorguyu sorgu tasarımcısı kullanarak tasarlayamazsınız.

Sonraki Adımlar

Bir sorgunun görsel olarak nasıl tasarlanacağını öğrenmek için bkz. Nasıl yapılır: Sorgu Tasarımcısı'nı kullanarak bir sorgu tasarlama.

Sorguyu bir ekranda nasıl kullanacağınızı öğrenmek için bkz. Nasıl yapılır: Silverlight Ekranında Verileri Filtreleme.

Bir uygulamaya eklediğiniz özel kod kapsamında bir sorgunun nasıl çalıştırılacağını öğrenmek için bkz. Nasıl yapılır: Veri Al bir sorgudan kodunu kullanarak.

Ayrıca bkz.

Görevler

Nasıl yapılır: ekleme, kaldırma ve bir sorguyu değiştirin

Diğer Kaynaklar

Sorgu: Bir veri kaynağındaki bilgileri alınıyor

C# [NULL]'taki LINQ ile çalışmaya başlama

Visual Basic'te LINQ ile çalışmaya başlama

Visual Basic'te LINQ