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.
Bu izlenecek yol, en düşük karmaşıklıklara sahip temel bir uçtan uca LINQ to SQL senaryosu sağlar. Örnek Northwind veritabanında Customers tablosunu modelleyen bir varlık sınıfı oluşturacaksınız. Ardından, Londra'da bulunan müşterileri listelemek için basit bir sorgu oluşturacaksınız.
Bu kılavuz, LINQ to SQL kavramlarını göstermeye yardımcı olmak için tasarım gereği koda yöneliktir. Normalde nesne modelinizi oluşturmak için Nesne İlişkisel Tasarımcısı'nı kullanırsınız.
Uyarı
Bilgisayarınız, aşağıdaki yönergelerde bazı Visual Studio kullanıcı arabirimi öğeleri için farklı adlar veya konumlar gösterebilir. Sahip olduğunuz Visual Studio sürümü ve kullandığınız ayarlar bu öğeleri belirler. Daha fazla bilgi için bkz. IDE'yi Kişiselleştirme.
Bu kılavuz Visual C# Geliştirme Ayarları kullanılarak yazılmıştır.
Önkoşullar
Bu kılavuzda, dosyaları tutmak için ayrılmış bir klasör ("c:\linqtest5") kullanılır. İzlenecek yol başlamadan önce bu klasörü oluşturun.
Bu izlenecek yol, Northwind örnek veritabanını gerektirir. Geliştirme bilgisayarınızda bu veritabanı yoksa, microsoft indirme sitesinden indirebilirsiniz. Yönergeler için bkz. Örnek Veritabanlarını İndirme. Veritabanını indirdikten sonra, dosyayı c:\linqtest5 klasörüne kopyalayın.
Genel Bakış
Bu kılavuz altı ana görevden oluşur:
Visual Studio'da LINQ to SQL çözümü oluşturma.
Bir sınıfı veritabanı tablosuna eşleme.
Sınıfta veritabanı sütunlarını temsil etmek için özellikler belirleme.
Northwind veritabanı bağlantısını belirtme.
Veritabanına karşı çalıştırmak için basit bir sorgu oluşturma.
Sorguyu yürütme ve sonuçları gözlemleme.
LINQ to SQL Çözümü Oluşturma
Bu ilk görevde, LINQ to SQL projesi oluşturmak ve çalıştırmak için gerekli başvuruları içeren bir Visual Studio çözümü oluşturacaksınız.
LINQ to SQL çözümü oluşturmak için
Visual Studio Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın.
Yeni Proje iletişim kutusunun Proje türleri bölmesinde Visual C# öğesine tıklayın.
Şablonlar bölmesinde Konsol Uygulaması'na tıklayın.
Ad kutusuna LinqConsoleApp yazın.
Konum kutusunda proje dosyalarınızı nerede depolamak istediğinizi doğrulayın.
Tamam'a tıklayın.
LINQ Başvuruları ve Yönergeleri Ekleme
Bu kılavuzda, projenizde varsayılan olarak yüklenmemiş olabilecek derlemeler kullanılır. System.Data.Linq projenizde başvuru olarak listelenmiyorsa (Çözüm Gezgini'ndeBaşvurular düğümünü genişletin), aşağıdaki adımlarda açıklandığı gibi ekleyin.
System.Data.Linq eklemek için
Çözüm Gezgini'da Başvurular'a sağ tıklayın ve ardından Başvuru Ekle'ye tıklayın.
Başvuru Ekle iletişim kutusunda .NET'e tıklayın, System.Data.Linq derlemesine ve ardından Tamam'a tıklayın.
Projeye montaj eklendi.
Program.cs en üstüne aşağıdaki yönergeleri ekleyin:
using System.Data.Linq; using System.Data.Linq.Mapping;
Bir Sınıfı Veritabanı Tablosuna Eşleme
Bu adımda bir sınıf oluşturacak ve bunu bir veritabanı tablosuna eşleyebilirsiniz. Böyle bir sınıf bir varlık sınıfı olarak anılır. Eşlemenin yalnızca TableAttribute özniteliği eklenerek gerçekleştirildiğini unutmayın. Name özelliği, veritabanındaki tablonun adını belirtir.
Varlık sınıfı oluşturmak ve bunu bir veritabanı tablosuyla eşlemek için
Aşağıdaki kodu sınıf bildiriminin hemen üstündeki Program.cs dosyasına yazın veya yapıştırın:
Program[Table(Name = "Customers")] public class Customer { }
Sınıfta Veritabanı Sütunlarını Temsil Edecek Özellikleri Belirleme
Bu adımda, birkaç görevi yerine getirebilirsiniz.
varlık sınıfındaki ColumnAttribute ve
CustomerIDözelliklerini veritabanı tablosundaki sütunları temsil eden olarak atamak içinCityözniteliğini kullanırsınız.özelliğini veritabanındaki
CustomerIDbirincil anahtar sütununu temsil eden olarak belirleyebilirsiniz._CustomerIDve_Cityalanlarını özel depolama için belirlersiniz. LINQ to SQL, iş mantığı içerebilecek genel erişimcileri kullanmak yerine değerleri doğrudan depolayabilir ve alabilir.
İki veritabanı sütununun özelliklerini temsil etmek için
Aşağıdaki kodu
Customersınıfı için, Program.cs dosyasındaki küme ayraçlarının içine yazın veya yapıştırın.private string _CustomerID; [Column(IsPrimaryKey=true, Storage="_CustomerID")] public string CustomerID { get { return this._CustomerID; } set { this._CustomerID = value; } } private string _City; [Column(Storage="_City")] public string City { get { return this._City; } set { this._City=value; } }
Northwind Veritabanı Bağlantısını Belirtme
Bu adımda, kod tabanlı veri yapılarınızla veritabanının kendisi arasında bağlantı kurmak için bir DataContext nesne kullanırsınız. DataContext, veritabanından nesneleri aldığınız ve değişiklikleri gönderdiğiniz ana kanaldır.
Ayrıca, veritabanındaki Müşteriler tablosuna karşı sorgularınız için mantıksal, tip atanmış bir tablo olarak Table<Customer> tanımlarsınız. Bu sorguları sonraki adımlarda oluşturacak ve yürüteceksiniz.
Veritabanı bağlantısını belirtmek için
Aşağıdaki kodu
Mainyönteminin içine yazın veya yapıştırın.northwnd.mdfDosyanın linqtest5 klasöründe olduğu varsayılır. Daha fazla bilgi için bu kılavuzun önceki bölümlerinde yer alan Önkoşullar bölümüne bakın.// Use a connection string. DataContext db = new DataContext (@"c:\linqtest5\northwnd.mdf"); // Get a typed table to run queries. Table<Customer> Customers = db.GetTable<Customer>();
Basit Sorgu Oluşturma
Bu adımda, Müşteriler tablosundaki hangi müşterilerin Londra'da bulunduğunu bulmak için bir sorgu oluşturursunuz. Bu adımdaki sorgu kodu yalnızca sorguyu açıklar. Uygulamaz. Bu yaklaşım ertelenen yürütme olarak bilinir. Daha fazla bilgi için bkz . LINQ Sorgularına Giriş (C#).
AYRıCA LINQ to SQL'in oluşturduğu SQL komutlarını göstermek için bir günlük çıkışı da oluşturacaksınız. Bu günlüğe kaydetme özelliği (kullanan Log), hata ayıklamada ve veritabanına gönderilen komutların sorgunuzu doğru şekilde temsil ettiğini belirlemede yararlıdır.
Basit bir sorgu oluşturmak için
Aşağıdaki kodu
Mainyöntemine yazın veya yapıştırın,Table<Customer>bildiriminin ardından.// Attach the log to show generated SQL. db.Log = Console.Out; // Query for customers in London. IQueryable<Customer> custQuery = from cust in Customers where cust.City == "London" select cust;
Sorguyu Yürütme
Bu adımda sorguyu yürütürsiniz. Önceki adımlarda oluşturduğunuz sorgu ifadeleri, sonuçlar gerekli olana kadar değerlendirilmez. Yinelemeye foreach başladığınızda, veritabanında bir SQL komutu yürütülür ve nesneler oluşturulur.
Sorguyu yürütmek için
Yönteminin sonuna
Mainaşağıdaki kodu yazın veya yapıştırın (sorgu açıklamasından sonra).foreach (Customer cust in custQuery) { Console.WriteLine("ID={0}, City={1}", cust.CustomerID, cust.City); } // Prevent console window from closing. Console.ReadLine();Uygulamada hata ayıklamak için F5 tuşuna basın.
Uyarı
Uygulamanız bir çalışma zamanı hatası oluşturuyorsa, İzlenecek Yollara Göre Öğrenme'nin Sorun Giderme bölümüne bakın.
Konsol penceresindeki sorgu sonuçları aşağıdaki gibi görünmelidir:
ID=AROUT, City=LondonID=BSBEV, City=LondonID=CONSH, City=LondonID=EASTC, City=LondonID=NORTS, City=LondonID=SEVES, City=LondonUygulamayı kapatmak için konsol penceresinde Enter tuşuna basın.
Sonraki Adımlar
İzlenecek Yol: İlişkiler Arasında Sorgulama (C#) konusu, bu kılavuzun sona erdiği yerde devam eder. İlişkiler Arasında Sorgu kılavuzu, LINQ to SQL'in ilişkisel veritabanındaki birleşimlere benzer şekilde tablolar arasında nasıl sorgu oluşturabileceğini gösterir.
İlişkiler Arasında Sorgu rehberini gerçekleştirmek istiyorsanız, az önce tamamladığınız ve önkoşul olan rehber için çözümü kaydettiğinizden emin olun.