Aracılığıyla paylaş


Kılavuz: Basit Nesne Modeli ve Sorgu (Visual Basic)

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 Basic Geliştirme Ayarları kullanılarak yazılmıştır.

Önkoşullar

  • Bu kılavuzda, dosyaları tutmak için ayrılmış bir klasör ("c:\linqtest") 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:\linqtest 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. Dosya menüsünde Yeni Proje'ye tıklayın.

  2. Yeni Proje iletişim kutusunun Proje türleri bölmesinde Visual Basic'e tıklayın.

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

  4. Ad kutusuna LinqConsoleApp yazın.

  5. 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. Projenizde başvuru olarak listelenmiyorsa System.Data.Linq (Çözüm Gezgini'ndeTüm Dosyaları Göster'e tıklayın ve Baş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. Ayrıca Başvuru Ekle iletişim kutusunda .NET'e tıklayın, sayfayı kaydırıp System.Windows.Forms'a tıklayın ve ardından Tamam'a tıklayın.

    İzlenecek yoldaki ileti kutusunu destekleyen bu derleme projeye eklenir.

  4. Aşağıdaki yönergeleri Module1'nin üzerine ekleyin:

    Imports System.Data.Linq
    Imports System.Data.Linq.Mapping
    Imports System.Windows.Forms
    
    

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 Sub Main öğesinin hemen üzerine Module1.vb dosyasına yazın veya yapıştırın.

    <Table(Name:="Customers")> _
    Public Class Customer
    End Class
    

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

  • Module1.vb dosyasına aşağıdaki kodu End Class'den hemen önce yazın veya yapıştırın.

    Private _CustomerID As String
    <Column(IsPrimaryKey:=True, Storage:="_CustomerID")> _
    Public Property CustomerID() As String
        Get
            Return Me._CustomerID
        End Get
        Set(ByVal value As String)
            Me._CustomerID = value
        End Set
    End Property
    
    Private _City As String
    <Column(Storage:="_City")> _
    Public Property City() As String
        Get
            Return Me._City
        End Get
        Set(ByVal value As String)
            Me._City = value
        End Set
    End Property
    

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(Of 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 Sub Main yönteminin içine yazın veya yapıştırın.

    northwnd.mdf Dosyanın linqtest 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.
    Dim db As New DataContext _
        ("c:\linqtest\northwnd.mdf")
    
    ' Get a typed table to run queries.
    Dim Customers As Table(Of Customer) = _
        db.GetTable(Of 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

  • Yöntemdeki Sub Main tanımından sonra Table(Of Customer) içine aşağıdaki kodu yazın veya yapıştırın.

    ' Attach the log to show generated SQL in a console window.
    db.Log = Console.Out
    
    ' Query for customers in London.
    Dim 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 For Each 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öntemin sonuna aşağıdaki kodu yazın veya yapıştırın Sub Main (sorgu açıklamasından sonra):

    ' Format the message box.
    Dim msg As String = "", title As String = "London customers:", _
        response As MsgBoxResult, style As MsgBoxStyle = _
        MsgBoxStyle.Information
    
    ' Execute the query.
    For Each custObj In custQuery
        msg &= String.Format(custObj.CustomerID & vbCrLf)
    Next
    
    ' Display the results.
    response = MsgBox(msg, style, title)
    
  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.

    İleti kutusunda altı müşterinin listesi görüntülenir. Konsol penceresinde oluşturulan SQL kodu görüntülenir.

  3. İleti kutusunu kapatmak için Tamam'a tıklayın.

    Uygulama kapanır.

  4. Dosya menüsünde, Tümünü Kaydetseçeneğine tıklayın.

    Sonraki izlenecek yol ile devam ederseniz bu uygulamaya ihtiyacınız olacaktır.

Sonraki Adımlar

İzlenecek Yol: İlişkiler Arasında Sorgulama (Visual Basic) konusu, bu kılavuzun sona erdiği yerden devam eder. İlişkiler Arasında Sorgulama 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.

Eğer İlişkiler Arasında Sorgulama rehberini yapmak istiyorsanız, az önce tamamladığınız rehberin çözümünü kaydettiğinizden emin olun; bu bir ön koşuldur.

Ayrıca bakınız