Aracılığıyla paylaş


Yol Gösterimi: Basit Nesne Modeli ve Sorgulama (C#)

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

  1. Visual Studio Dosya menüsünde Yeni'nin üzerine gelin ve Proje'ye tıklayın.

  2. Yeni Proje iletişim kutusunun Proje türleri bölmesinde Visual C# öğesine tıklayın.

  3. Şablonlar bölmesinde Konsol Uygulaması'na tıklayın.

  4. Ad kutusuna LinqConsoleApp yazın.

  5. Konum kutusunda proje dosyalarınızı nerede depolamak istediğinizi doğrulayın.

  6. 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

  1. Çözüm Gezgini'da Başvurular'a sağ tıklayın ve ardından Başvuru Ekle'ye tıklayın.

  2. 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.

  3. 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çin City özniteliğini kullanırsınız.

  • özelliğini veritabanındaki CustomerID birincil anahtar sütununu temsil eden olarak belirleyebilirsiniz.

  • _CustomerID ve _City alanları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 Customer sı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 Main yönteminin içine yazın veya yapıştırın.

    northwnd.mdf Dosyanı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 Main yö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

  1. Yönteminin sonuna Main aş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();
    
  2. 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=London

    ID=BSBEV, City=London

    ID=CONSH, City=London

    ID=EASTC, City=London

    ID=NORTS, City=London

    ID=SEVES, City=London

  3. Uygulamayı 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.

Ayrıca bakınız