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, veritabanındaki yabancı anahtar ilişkilerini temsil etmek için LINQ to SQL ilişkilendirmelerinin kullanımını gösterir.
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
İzlenecek Yol: Basit Nesne Modeli ve Sorgu (Visual Basic) bölümünü tamamlamış olmanız gerekir. Bu izlenecek yol, önceki izlenecek yol üzerine derlenmiştir ve c:\linqtest'teki northwnd.mdf dosyasının varlığını içermektedir.
Genel Bakış
Bu izlenecek yol üç ana görevden oluşur:
Örnek Northwind veritabanında Orders tablosunu temsil eden bir varlık sınıfı ekleme.
İlişkiyi geliştirmek amacıyla
Customersınıfına,CustomerveOrdersınıfları arasındaki ek açıklamalar ekleme.Ordersınıfını kullanarak bilgi alma işlemine ilişkin süreci test etmek için sorgu oluşturma ve çalıştırma.
Tablolar Arasında İlişkileri Eşleme
Sınıf tanımı Customer oluşturulduktan sonra, Order varlık sınıfı tanımını oluşturun ve bu tanımda Orders.Customer'nin, Customers.CustomerID ile yabancı anahtar olarak ilişkili olduğunu gösteren aşağıdaki kodu ekleyin.
Order varlık sınıfını eklemek için
Customersınıfının ardından aşağıdaki kodu yazın veya yapıştırın.<Table(Name:="Orders")> _ Public Class Order Private _OrderID As Integer Private _CustomerID As String Private _Customers As EntityRef(Of Customer) Public Sub New() Me._Customers = New EntityRef(Of Customer)() End Sub <Column(Storage:="_OrderID", DbType:="Int NOT NULL IDENTITY", _ IsPrimaryKey:=True, IsDBGenerated:=True)> _ Public ReadOnly Property OrderID() As Integer Get Return Me._OrderID End Get End Property ' No need to specify a setter because IsDBGenerated is true. <Column(Storage:="_CustomerID", DbType:="NChar(5)")> _ Public Property CustomerID() As String Get Return Me._CustomerID End Get Set(ByVal value As String) Me._CustomerID = value End Set End Property <Association(Storage:="_Customers", ThisKey:="CustomerID")> _ Public Property Customers() As Customer Get Return Me._Customers.Entity End Get Set(ByVal value As Customer) Me._Customers.Entity = value End Set End Property End Class
Müşteri Sınıfına Açıklama Ekleme
Bu adımda, Customer sınıfına Order sınıfıyla olan ilişkisini göstermek için etiketleme yaparsınız. (İlişkiyi her iki yönde tanımlamak bağlantıyı oluşturmak için yeterli olduğundan bu ekleme kesinlikle gerekli değildir. Ancak bu ek açıklamayı eklemek, nesnelerde her iki yönde de kolayca gezinmenizi sağlar.)
Customer sınıfına açıklama eklemek için
Sınıfına aşağıdaki kodu yazın veya yapıştırın
Customer:Private _Orders As EntitySet(Of Order) Public Sub New() Me._Orders = New EntitySet(Of Order)() End Sub <Association(Storage:="_Orders", OtherKey:="CustomerID")> _ Public Property Orders() As EntitySet(Of Order) Get Return Me._Orders End Get Set(ByVal value As EntitySet(Of Order)) Me._Orders.Assign(value) End Set End Property
Customer-Order İlişkisinde Sorgu Oluşturma ve Çalıştırma
Artık Order nesnelere doğrudan Customer nesnelerden veya ters sırada erişebilirsiniz. Müşteriler ve siparişler arasında açık bir birleşime ihtiyacınız yoktur.
Order nesnelerine erişmek için Müşteri nesnelerini kullanmak
yöntemine
Sub Mainaşağıdaki kodu yazarak veya yapıştırarak yöntemini değiştirin:' Query for customers who have no orders. Dim custQuery = _ From cust In Customers _ Where Not cust.Orders.Any() _ Select cust Dim msg As String = "", title As String = _ "Customers With No Orders", response As MsgBoxResult, _ style As MsgBoxStyle = MsgBoxStyle.Information For Each custObj In custQuery msg &= String.Format(custObj.CustomerID & vbCrLf) Next response = MsgBox(msg, style, title)Uygulamanızda hata ayıklamak için F5 tuşuna basın.
İleti kutusunda iki ad, Konsol penceresinde ise oluşturulan SQL kodu gösterilir.
Hata ayıklamayı durdurmak için ileti kutusunu kapatın.
Veritabanınızın Güçlü Tipte Bir Görünümünü Oluşturma
Veritabanınızın kesin olarak belirlenmiş bir görünümüyle başlamak çok daha kolaydır. Nesneyi güçlü bir şekilde DataContext yazarak GetTable çağrı yapmanıza gerek kalmaz. Kesin tip tanımlı DataContext nesneyi kullandığınızda, tüm sorgularınızda kesin tip tanımlı tabloları kullanabilirsiniz.
Aşağıdaki adımlarda, veritabanındaki Müşteriler tablosuyla eşleşen, belirli bir türe sahip bir tablo olarak Customers oluşturacaksınız.
DataContext nesnesini kesin olarak yazmak için
Sınıf bildiriminin
Customerüzerine aşağıdaki kodu ekleyin.Public Class Northwind Inherits DataContext ' Table(Of T) abstracts database details per ' table/data type. Public Customers As Table(Of Customer) Public Orders As Table(Of Order) Public Sub New(ByVal connection As String) MyBase.New(connection) End Sub End ClassSub Main'ı, aşağıdaki gibi güçlü yazılmış DataContext kullanacak şekilde değiştirin.' Use a connection string. Dim db As New Northwind _ ("C:\linqtest\northwnd.mdf") ' Query for customers from Seattle. Dim custs = _ From cust In db.Customers _ Where cust.City = "Seattle" _ Select cust For Each custObj In custs Console.WriteLine("ID=" & custObj.CustomerID) Next ' Freeze the console window. Console.ReadLine()Uygulamanızda hata ayıklamak için F5 tuşuna basın.
Konsol penceresi çıkışı şöyledir:
ID=WHITCUygulamayı kapatmak için Konsol penceresinde Enter tuşuna basın.
Bu uygulamayı kaydetmek istiyorsanız Dosya menüsünde Tümünü Kaydet'e tıklayın.
Sonraki Adımlar
Sonraki izlenecek yol (İzlenecek Yol: Verileri Düzenleme (Visual Basic)) verileri işlemeyi gösterir. Bu izlenecek yol, daha önce tamamlamış olduğunuz bu serideki iki kılavuzu kaydetmenizi gerektirmez.