LINQ ve ADO.NET
Günümüzde birçok iş geliştiricisinin iki (veya daha fazla) programlama dili kullanması gerekir: iş mantığı ve sunu katmanları için üst düzey bir dil (Visual C# veya Visual Basic gibi) ve veritabanıyla etkileşime geçmek için sorgu dili (Transact-SQL gibi). Bu, geliştiricinin çeşitli dillerde etkili olmasını gerektirir ve ayrıca geliştirme ortamında dil uyuşmazlıklarına neden olur. Örneğin, veritabanında sorgu yürütmek için veri erişim API'sini kullanan bir uygulama, tırnak işaretlerini kullanarak sorguyu dize değişmez değeri olarak belirtir. Bu sorgu dizesi derleyici tarafından okunamıyor ve geçersiz söz dizimi veya başvuruda bulunduğu sütunların veya satırların gerçekten var olup olmadığı gibi hatalar için denetlenmiyor. Sorgu parametrelerinde tür denetimi ve destek de yoktur IntelliSense
.
DilLe Tümleşik Sorgu (LINQ), geliştiricilerin ayrı bir sorgu dili kullanmak zorunda kalmadan uygulama kodlarında ayarlanmış tabanlı sorgular oluşturmasına olanak tanır. Bellek içi veri yapıları, XML belgeleri, SQL veritabanları ve DataSet nesneler gibi çeşitli numaralandırılabilir veri kaynaklarına (arabirimi uygulayan IEnumerable bir veri kaynağı) linq sorguları yazabilirsiniz. Bu numaralandırılabilir veri kaynakları çeşitli şekillerde uygulansa da, hepsi aynı söz dizimini ve dil yapılarını kullanıma sunar. Sorgular programlama dilinin kendisinde oluşturulabildiğinden, derleyici tarafından anlaşılamayan veya doğrulanamayan dize değişmez değerleri olarak eklenmiş başka bir sorgu dili kullanmanız gerekmez. Sorguları programlama diliyle tümleştirmek, derleme zamanı türü ve söz dizimi denetimi ve IntelliSense
sağlayarak Visual Studio programcıların daha üretken olmasını da sağlar. Bu özellikler sorgu hata ayıklama ve hata düzeltme gereksinimini azaltır.
SQL tablolarından bellekteki nesnelere veri aktarmak genellikle yorucu ve hataya açıktır. LINQ tarafından DataSet'e ve LINQ tarafından SQL'e uygulanan LINQ sağlayıcısı, kaynak verileri tabanlı nesne koleksiyonlarına IEnumerabledönüştürür. Programcı, hem sorguladığınızda hem de güncelleştirdiğinizde verileri her zaman bir IEnumerable koleksiyon olarak görüntüler. Bu koleksiyonlara yönelik sorgular yazmak için tam IntelliSense
destek sağlanır.
Üç ayrı ADO.NET Dil Tümleşik Sorgu (LINQ) teknolojisi vardır: LINQ to DataSet, LINQ to SQL ve LINQ to Entities. LINQ to DataSet, ve LINQ to SQL üzerinden DataSet daha zengin, iyileştirilmiş sorgular sağlar ve SQL Server veritabanı şemalarını doğrudan sorgulamanıza olanak tanır ve LINQ to Entities bir Varlık Veri Modelini sorgulamanıza olanak tanır.
Aşağıdaki diyagramda, ADO.NET LINQ teknolojilerinin üst düzey programlama dilleri ve LINQ özellikli veri kaynaklarıyla ilişkisine genel bir bakış sağlanmaktadır.
LINQ hakkında daha fazla bilgi için bkz . Dil Tümleşik Sorgusu (LINQ).
Aşağıdaki bölümlerde LINQ to DataSet, LINQ to SQL ve LINQ to Entities hakkında daha fazla bilgi sağlanır.
LINQ to DataSet
DataSet, ADO.NET temel alınan ve yaygın olarak kullanılan bağlantısız programlama modelinin önemli bir öğesidir. LINQ to DataSet, geliştiricilerin diğer birçok veri kaynağı için kullanılabilen sorgu formülasyonu mekanizmasını kullanarak daha zengin sorgu özellikleri DataSet oluşturmasına olanak tanır. Daha fazla bilgi için bkz . LINQ to DataSet.
LINQ to SQL
LINQ to SQL, kavramsal bir modele eşleme gerektirmeyen geliştiriciler için kullanışlı bir araçtır. LINQ to SQL kullanarak LINQ programlama modelini doğrudan mevcut veritabanı şeması üzerinden kullanabilirsiniz. LINQ to SQL, geliştiricilerin verileri temsil eden .NET Framework sınıfları oluşturmasına olanak tanır. Bu oluşturulan sınıflar kavramsal veri modeline eşlemek yerine doğrudan veritabanı tablolarına, görünümlerine, saklı yordamlara ve kullanıcı tanımlı işlevlere eşler.
LINQ to SQL ile geliştiriciler, xml gibi diğer veri kaynaklarına ek olarak bellek içi koleksiyonlar ve ile aynı LINQ programlama desenini DataSetkullanarak depolama şemasına doğrudan kod yazabilir. Daha fazla bilgi için bkz . LINQ to SQL.
LINQ to Entities
Uygulamaların çoğu şu anda ilişkisel veritabanlarının üzerine yazılmıştır. Bir noktada, bu uygulamaların ilişkisel bir biçimde temsil edilen verilerle etkileşim kurması gerekir. Veritabanı şemaları her zaman uygulama oluşturmak için ideal değildir ve uygulama kavramsal modelleri veritabanlarının mantıksal modelleri ile aynı değildir. Varlık Veri Modeli, uygulamaların verilerle nesne olarak etkileşim kurabilmesi için belirli bir etki alanının verilerini modellemek için kullanılabilecek kavramsal bir veri modelidir. Daha fazla bilgi için bkz . Entity Framework ADO.NET.
Varlık Veri Modeli aracılığıyla ilişkisel veriler .NET ortamında nesneler olarak gösterilir. Bu, nesne katmanını LINQ desteği için ideal bir hedef haline getirerek geliştiricilerin iş mantığını oluşturmak için kullanılan dilden veritabanına yönelik sorgular formüle etmelerine olanak tanır. Bu özellik LINQ to Entities olarak bilinir. Daha fazla bilgi için bkz . LINQ to Entities.