Nasıl yapılır: Dinamik Olarak Veritabanı Oluşturma
LINQ to SQL'de nesne modeli ilişkisel bir veritabanına eşlenir. Eşleme, ilişkisel veritabanının yapısını açıklamak için öznitelik tabanlı eşleme veya dış eşleme dosyası kullanılarak etkinleştirilir. her iki senaryoda da ilişkisel veritabanı hakkında yöntemini kullanarak DataContext.CreateDatabase veritabanının yeni bir örneğini oluşturabileceğiniz yeterli bilgi vardır.
DataContext.CreateDatabase yöntemi, veritabanının bir çoğaltmasını yalnızca nesne modelinde kodlanmış bilgilerin kapsamına göre oluşturur. Nesne modelinizdeki dosyaları ve öznitelikleri eşlemek, mevcut veritabanının yapısıyla ilgili her şeyi kodlamayabilir. Eşleme bilgileri kullanıcı tanımlı işlevlerin, saklı yordamların, tetikleyicilerin veya denetim kısıtlamalarının içeriğini temsil etmez. Bu davranış çeşitli veritabanları için yeterlidir.
Yöntemini, özellikle Microsoft SQL Server 2008 gibi bilinen bir veri sağlayıcısı varsa, istediğiniz sayıda senaryoda kullanabilirsiniz DataContext.CreateDatabase . Tipik senaryolar şunlardır:
Kendisini otomatik olarak bir müşteri sistemine yükleyen bir uygulama oluşturuyorsunuz.
Çevrimdışı durumunu kaydetmek için yerel veritabanına ihtiyaç duyan bir istemci uygulaması oluşturuyorsunuz.
bağlantı dizesi bağlı olarak .mdf bir dosya veya katalog adı kullanarak sql server ile yöntemini de kullanabilirsinizDataContext.CreateDatabase. LINQ to SQL, oluşturulacak veritabanını ve veritabanının oluşturulacağı sunucuyu tanımlamak için bağlantı dizesi kullanır.
Not
Mümkün olduğunda, bağlantı dizesi parolaların gerekli olmaması için veritabanına bağlanmak için Windows Tümleşik Güvenlik'i kullanın.
Örnek 1
Aşağıdaki kod, MyDVDs.mdf adlı yeni bir veritabanının nasıl oluşturulacağını gösteren bir örnek sağlar.
public class MyDVDs : DataContext
{
public Table<DVD> DVDs;
public MyDVDs(string connection) : base(connection) { }
}
[Table(Name = "DVDTable")]
public class DVD
{
[Column(IsPrimaryKey = true)]
public string Title;
[Column]
public string Rating;
}
Public Class MyDVDs
Inherits DataContext
Public DVDs As Table(Of DVD)
Public Sub New(ByVal connection As String)
MyBase.New(connection)
End Sub
End Class
<Table(Name:="DVDTable")> _
Public Class DVD
<Column(IsPrimaryKey:=True)> _
Public Title As String
<Column()> _
Public Rating As String
End Class
Örnek 2
Aşağıdakileri yaparak veritabanı oluşturmak için nesne modelini kullanabilirsiniz:
public void CreateDatabase()
{
MyDVDs db = new MyDVDs("c:\\mydvds.mdf");
db.CreateDatabase();
}
Public Sub CreateDatabase()
Dim db As New MyDVDs("c:\...\mydvds.mdf")
db.CreateDatabase()
End Sub
Örnek 3
Otomatik olarak kendisini müşteri sistemine yükleyen bir uygulama oluştururken veritabanının zaten var olup olmadığını görün ve yeni bir tane oluşturmadan önce bırakın. sınıfı, DataContext bu işlemde DatabaseExists size yardımcı olacak ve DeleteDatabase yöntemlerini sağlar.
Aşağıdaki örnekte bu yöntemlerin bu yaklaşımı uygulamak için kullanılabilmesinin bir yolu gösterilmektedir:
public void CreateDatabase2()
{
MyDVDs db = new MyDVDs(@"c:\mydvds.mdf");
if (db.DatabaseExists())
{
Console.WriteLine("Deleting old database...");
db.DeleteDatabase();
}
db.CreateDatabase();
}
Public Sub CreateDatabase2()
Dim db As MyDVDs = New MyDVDs("c:\...\mydvds.mdf")
If db.DatabaseExists() Then
Console.WriteLine("Deleting old database...")
db.DeleteDatabase()
End If
db.CreateDatabase()
End Sub