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.
LINQ to SQL'de, geliştiricinin programlama diliyle ifade edilen bir nesne modeli ilişkisel veritabanının veri modeliyle eşlenir. Daha sonra veriler üzerindeki işlemler nesne modeline göre yürütülür.
Bu senaryoda, veritabanına veritabanı komutları (örneğin, INSERT) vermezsiniz. Bunun yerine, değerleri değiştirir ve nesne modelinizde yöntemleri yürütürsiniz. Veritabanını sorgulamak veya değişiklikleri göndermek istediğinizde, LINQ to SQL isteklerinizi doğru SQL komutlarına çevirir ve bu komutları veritabanına gönderir.
LINQ to SQL nesne modelindeki en temel öğeler ve ilişkisel veri modelindeki öğelerle ilişkileri aşağıdaki tabloda özetlenmiştir:
| LINQ to SQL Nesne Modeli | İlişkisel Veri Modeli |
|---|---|
| Varlık sınıfı | Tablo |
| Sınıf üyesi | Köşe yazısı |
| Dernek | Yabancı anahtar ilişkisi |
| Yöntem | Saklı Yordam veya İşlev |
Uyarı
Aşağıdaki açıklamalarda ilişkisel veri modeli ve kuralları hakkında temel bilgilere sahip olduğunuz varsayılır.
LINQ to SQL Varlık Sınıfları ve Veritabanı Tabloları
LINQ to SQL'de veritabanı tablosu bir varlık sınıfıyla temsil edilir. Varlık sınıfı, sınıfı bir veritabanı tablosuyla ilişkilendiren özel bilgiler kullanarak sınıfa açıklama eklemeniz dışında oluşturabileceğiniz diğer sınıflara benzer. Aşağıdaki örnekte olduğu gibi sınıf bildiriminize özel bir öznitelik (TableAttribute) ekleyerek bu ek açıklamayı yaparsınız:
Örnek
[Table(Name = "Customers")]
public class Customerzz
{
public string CustomerID;
// ...
public string City;
}
<Table(Name:="Customers")> _
Public Class Customer
Public CustomerID As String
' ...
Public City As String
End Class
Yalnızca tablo olarak bildirilen sınıfların örnekleri (varlık sınıfları) veritabanına kaydedilebilir.
Daha fazla bilgi için Attribute-Based Eşlemesi Tablo Özniteliği bölümüne bakın.
LINQ to SQL Sınıf Üyeleri ve Veritabanı Sütunları
Sınıfları tablolarla ilişkilendirmeye ek olarak, veritabanı sütunlarını temsil eden alanları veya özellikleri de belirlersiniz. Bu amaçla LINQ to SQL özniteliğini ColumnAttribute aşağıdaki örnekte olduğu gibi tanımlar:
Örnek
[Table(Name = "Customers")]
public class Customer
{
[Column(IsPrimaryKey = true)]
public string CustomerID;
[Column]
public string City;
}
<Table(Name:="Customers")> _
Public Class Customer
<Column(IsPrimaryKey:=True)> _
Public CustomerID As String
<Column()> _
Public City As String
End Class
Yalnızca sütunlara eşlenen alanlar ve özellikler veritabanında kalıcı olarak kalır veya veritabanından alınır. Sütun olarak bildirilmeyenler, uygulama mantığınızın geçici parçaları olarak kabul edilir.
özniteliği, ColumnAttribute sütunları temsil eden bu üyeleri özelleştirmek için kullanabileceğiniz çeşitli özelliklere sahiptir (örneğin, bir üyeyi birincil anahtar sütununu temsil ediyor olarak belirleme). Daha fazla bilgi için Attribute-Based Eşlemesi'nin Sütun Özniteliği bölümüne bakın.
LINQ to SQL İlişkilendirmeleri ve Veritabanı Yabancı Anahtar İlişkileri
LINQ to SQL'de özniteliğini uygulayarak AssociationAttribute veritabanı ilişkilendirmelerini (yabancı anahtardan birincil anahtara ilişkiler gibi) temsil edebilirsiniz. Aşağıdaki kod kesiminde Order sınıfı, bir Customer özelliği ve AssociationAttribute özniteliği içerir. Bu özellik ve özniteliği, Order sınıfına Customer sınıfıyla bir ilişki sağlar.
Aşağıdaki kod örneği, Customer sınıfının Order özelliğini gösterir.
Örnek
[Association(Name="FK_Orders_Customers", Storage="_Customer", ThisKey="CustomerID", IsForeignKey=true)]
public Customer Customer
{
get
{
return this._Customer.Entity;
}
set
{
Customer previousValue = this._Customer.Entity;
if (((previousValue != value)
|| (this._Customer.HasLoadedOrAssignedValue == false)))
{
this.SendPropertyChanging();
if ((previousValue != null))
{
this._Customer.Entity = null;
previousValue.Orders.Remove(this);
}
this._Customer.Entity = value;
if ((value != null))
{
value.Orders.Add(this);
this._CustomerID = value.CustomerID;
}
else
{
this._CustomerID = default(string);
}
this.SendPropertyChanged("Customer");
}
}
}
<Association(Name:="FK_Orders_Customers", Storage:="_Customer", ThisKey:="CustomerID", IsForeignKey:=true)> _
Public Property Customer() As Customer
Get
Return Me._Customer.Entity
End Get
Set
Dim previousValue As Customer = Me._Customer.Entity
If (((previousValue Is value) _
= false) _
OrElse (Me._Customer.HasLoadedOrAssignedValue = false)) Then
Me.SendPropertyChanging
If ((previousValue Is Nothing) _
= false) Then
Me._Customer.Entity = Nothing
previousValue.Orders.Remove(Me)
End If
Me._Customer.Entity = value
If ((value Is Nothing) _
= false) Then
value.Orders.Add(Me)
Me._CustomerID = value.CustomerID
Else
Me._CustomerID = CType(Nothing, String)
End If
Me.SendPropertyChanged("Customer")
End If
End Set
End Property
Daha fazla bilgi içinAttribute-Based Eşlemesi'nin İlişkilendirme Özniteliği bölümüne bakın.
LINQ to SQL Yöntemleri ve Veritabanı Saklı Yordamları
LINQ to SQL saklı yordamları ve kullanıcı tanımlı işlevleri destekler. LINQ to SQL'de, bu veritabanı tanımlı soyutlamaları istemci nesneleriyle eşlersiniz, böylece bunlara istemci kodundan kesin olarak yazılmış bir şekilde erişebilirsiniz. Yöntem imzaları, veritabanında tanımlanan yordamların ve işlevlerin imzalarına olabildiğince benzer. Bu yöntemleri bulmak için IntelliSense'i kullanabilirsiniz.
Haritalanmış bir yordam çağrısı tarafından döndürülen sonuç kümesi, kesin olarak türü belirlenmiş bir koleksiyondur.
LINQ to SQL, FunctionAttribute ve ParameterAttribute özniteliklerini kullanarak saklı yordamları ve işlevleri yöntemlerle eşler. Saklı yordamları temsil eden yöntemler, özelliği tarafından IsComposable kullanıcı tanımlı işlevleri temsil edenlerden ayırt edilir. Bu özellik false (varsayılan) olarak ayarlanırsa, yöntem bir saklı yordamı temsil eder. olarak ayarlanırsa trueyöntemi bir veritabanı işlevini temsil eder.
Uyarı
Visual Studio kullanıyorsanız saklı yordamlara ve kullanıcı tanımlı işlevlere eşlenmiş yöntemler oluşturmak için Nesne İlişkisel Tasarımcısı'nı kullanabilirsiniz.
Örnek
// This is an example of a stored procedure in the Northwind
// sample database. The IsComposable property defaults to false.
[Function(Name="dbo.CustOrderHist")]
public ISingleResult<CustOrderHistResult> CustOrderHist([Parameter(Name="CustomerID", DbType="NChar(5)")] string customerID)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), customerID);
return ((ISingleResult<CustOrderHistResult>)(result.ReturnValue));
}
' This is an example of a stored procedure in the Northwind
' sample database. The IsComposable property defaults to false.
<FunctionAttribute(Name:="dbo.CustOrderHist")> _
Public Function CustOrderHist(<Parameter(Name:="CustomerID", DbType:="NChar(5)")> ByVal customerID As String) As ISingleResult(Of CustOrderHistResult)
Dim result As IExecuteResult = Me.ExecuteMethodCall(Me, CType(MethodInfo.GetCurrentMethod, MethodInfo), customerID)
Return CType(result.ReturnValue, ISingleResult(Of CustOrderHistResult))
End Function
Daha fazla bilgi içinAttribute-Based Eşleme ve Saklı Yordamlar'ın İşlev Özniteliği, Saklı Yordam Özniteliği ve Parametre Özniteliği bölümlerine bakın.