Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
LINQ to Entities, geliştiricilerin Visual Basic veya Visual C# kullanarak Entity Framework kavramsal modeline yönelik sorgular yazmasına olanak tanıyan Language-Integrated Sorgu (LINQ) desteği sağlar. Entity Framework'e yönelik sorgular, nesne bağlamında yürütülen komut ağacı sorguları tarafından temsil edilir. LINQ to Entities, Language-Integrated Sorguları (LINQ) sorgularını komut ağacı sorgularına dönüştürür, Sorguları Entity Framework'e göre yürütür ve hem Entity Framework hem de LINQ tarafından kullanılabilecek nesneler döndürür. LinQ to Entities sorgusu oluşturma ve yürütme işlemi aşağıdadır:
ObjectQuery<T>'den bir ObjectContext örneği oluşturun.
C# veya Visual Basic'te ObjectQuery<T> örneğini kullanarak bir LINQ to Entities sorgusu oluşturun.
LINQ standart sorgu işleçlerini ve ifadelerini komut ağaçlarına dönüştürün.
Sorguyu, komut ağacı gösteriminde veri kaynağına karşı yürütür. Yürütme sırasında veri kaynağında ortaya çıkan istisnalar doğrudan istemciye iletilir.
Sorgu sonuçlarını istemciye geri döndür.
ObjectQuery Örneği Oluşturma
Genel ObjectQuery<T> sınıf, sıfır veya daha fazla türünde varlıkların koleksiyonunu döndüren bir sorguyu temsil eder. Nesne sorgusu genellikle el ile oluşturmak yerine var olan bir nesne bağlamından oluşturulur ve her zaman bu nesne bağlamının üyesidir. Bu bağlam, sorguyu oluşturmak ve yürütmek için gereken bağlantı ve meta veri bilgilerini sağlar. Genel ObjectQuery<T> sınıf, LINQ sorgularının artımlı olarak oluşturulmasını sağlayan oluşturucu yöntemlere sahip IQueryable<T> genel arabirimi uygular. C# var
anahtar sözcüğünü (Dim
Visual Basic'te, yerel tür çıkarımı etkinken) kullanarak derleyicinin varlık türünü çıkarmasına da izin vekleyebilirsiniz.
Sorguları Oluşturma
ObjectQuery<T> Genel arabirimi uygulayan genel IQueryable<T> sınıfın örnekleri, LINQ to Entities sorguları için veri kaynağı görevi görür. Sorguda, veri kaynağından almak istediğiniz bilgileri tam olarak belirtirsiniz. Sorgu ayrıca bu bilgilerin döndürülmeden önce nasıl sıralanacağını, gruplandırılacağını ve şekillendirileceğini belirtebilir. LINQ'te sorgu bir değişkende depolanır. Bu sorgu değişkeni hiçbir işlem gerçekleştirmez ve veri döndürmez; yalnızca sorgu bilgilerini depolar. Bir sorgu oluşturduktan sonra, herhangi bir veri almak için bu sorguyu yürütmeniz gerekir.
LINQ to Entities sorguları iki farklı söz diziminde oluşturulabilir: sorgu ifadesi söz dizimi ve yöntem tabanlı sorgu söz dizimi. Sorgu ifadesi söz dizimi ve yöntem tabanlı sorgu söz dizimi C# 3.0 ve Visual Basic 9.0'da yenidir.
Daha fazla bilgi için bkz. LINQ to Entities içindeki sorgular.
Sorgu Dönüştürme
Entity Framework'e karşı bir LINQ to Entities sorgusu yürütmek için LINQ sorgusunun Entity Framework'e karşı yürütülebilen bir komut ağacı gösterimine dönüştürülmesi gerekir.
LINQ to Entities sorguları LINQ standart sorgu işleçlerinden (Select, Where, ve GroupBy) ve ifadelerden (x > 10, Contact.LastName vb.) oluşur. LINQ işleçleri bir sınıf tarafından tanımlanmaz, bunun yerine bir sınıftaki yöntemlerdir. LINQ'de ifadeler, ad alanı içindeki türlerin System.Linq.Expressions izin verdiği her şeyi ve uzantıya göre bir lambda işlevinde temsil edilebilen her şeyi içerebilir. Bu, Entity Framework tarafından izin verilen ifadelerin bir üst kümesidir ve tanımı veritabanında izin verilen işlemlerle sınırlıdır ve tarafından ObjectQuery<T>desteklenir.
Entity Framework'te hem işleçler hem de ifadeler tek bir tür hiyerarşisi tarafından temsil edilir ve bu hiyerarşi daha sonra bir komut ağacına yerleştirilir. Komut ağacı, sorguyu yürütmek için Entity Framework tarafından kullanılır. LINQ sorgusu komut ağacı olarak ifade edilemiyorsa, sorgu dönüştürülürken bir özel durum oluşturulur. LINQ'in Varlıklara dönüştürülmesi iki alt dönüştürme içerir: standart sorgu işleçlerinin dönüştürülmesi ve ifadelerin dönüştürülmesi.
LINQ'de Varlıklara geçerli bir çevirisi olmayan bir dizi LINQ standart sorgu işleci vardır. Bu işleçleri kullanma girişimleri sorgu çevirisi zamanında bir özel durumla sonuçlanır. Desteklenen LINQ to Entities işleçlerinin listesi için bkz . Desteklenen ve Desteklenmeyen LINQ Yöntemleri (LINQ to Entities).
LINQ to Entities içindeki standart sorgu işleçlerini kullanma hakkında daha fazla bilgi için bkz. LINQ to Entities Queries'da Standart Sorgu İşleçleri.
Genel olarak, LINQ to Entities ifadeleri sunucuda değerlendirilir, bu nedenle ifadenin davranışının CLR semantiğini izlemesi beklenmemelidir. Daha fazla bilgi için bkz. LINQ to Entities Queries içindeki ifadeler.
CLR yöntem çağrılarının veri kaynağındaki kurallı işlevlerle nasıl eşlendiği hakkında bilgi için bkz. CLR Yönteminden Kurallı İşlev Eşlemesine.
LINQ içinden Varlıklar sorgularına kurallı, veritabanı ve özel işlevleri çağırma hakkında bilgi için bkz. LINQ'te İşlevleri Varlıklara Çağırma Sorguları.
Sorgu Yürütme
LINQ sorgusu kullanıcı tarafından oluşturulduktan sonra, Entity Framework ile uyumlu bir gösterime dönüştürülür (komut ağaçları biçiminde), daha sonra veri kaynağında yürütülür. Sorgu yürütme zamanında, tüm sorgu ifadeleri (veya sorgunun bileşenleri) istemcide veya sunucuda değerlendirilir. Buna sonuç gerçekleştirme veya varlık projeksiyonlarında kullanılan ifadeler dahildir. Daha fazla bilgi için bkz. Sorgu Yürütme. Sorguyu bir kez derleyip farklı parametrelerle birkaç kez yürüterek performansı geliştirme hakkında bilgi için bkz. Derlenmiş Sorgular (LINQ to Entities).
Maddi Gerçekleşme
Gerçekleştirme, sorgu sonuçlarını CLR türleri olarak istemciye geri döndürme işlemidir. LINQ to Entities içinde sorgu sonuçları veri kayıtları hiçbir zaman döndürülmüyor; her zaman kullanıcı veya Entity Framework tarafından tanımlanan veya derleyici (anonim türler) tarafından oluşturulan bir yedekleme CLR türü vardır. Tüm nesne gerçekleştirme, Entity Framework tarafından gerçekleştirilir. Entity Framework ile CLR arasında eşlenemez durumdan kaynaklanan hatalar nesne gerçekleştirme sırasında özel durumların atılmasıyla sonuçlanır.
Sorgu sonuçları genellikle aşağıdakilerden biri olarak döndürülür:
Sıfır veya daha fazla türü belirlenmiş varlık nesnesi koleksiyonu veya kavramsal modelde tanımlanan karmaşık türlerin projeksiyonu.
Entity Framework tarafından desteklenen CLR türleri.
Satır içi koleksiyonlar.
Anonim türler.
Daha fazla bilgi için bkz. Sorgu Sonuçları.
Bu Kısımda
LINQ to Entities Sorgularında İfadeler
LINQ to Entities Sorgularında İşlevleri Çağırma
Derlenmiş Sorgular (LINQ to Entities)
LINQ to Entities Sorgularında Standart Sorgu İşleçleri
CLR Yöntemi ile Kurallı İşlev Eşlemesi
Desteklenen ve Desteklenmeyen LINQ Yöntemleri (LINQ to Entities)
LINQ to Entities'ta Bilinen Sorunlar ve Dikkat Edilmesi Gerekenler