Instrukcje: Dynamiczne tworzenie bazy danych
W linQ to SQL model obiektów jest mapowany na relacyjną bazę danych. Mapowanie jest włączone przy użyciu mapowania opartego na atrybutach lub pliku mapowania zewnętrznego w celu opisania struktury relacyjnej bazy danych. W obu scenariuszach istnieje wystarczająca ilość informacji na temat relacyjnej bazy danych, którą można utworzyć przy użyciu DataContext.CreateDatabase metody .
Metoda DataContext.CreateDatabase tworzy replikę bazy danych tylko w zakresie informacji zakodowanych w modelu obiektów. Mapowanie plików i atrybutów z modelu obiektów może nie kodować wszystkich elementów dotyczących struktury istniejącej bazy danych. Informacje o mapowaniu nie reprezentują zawartości funkcji zdefiniowanych przez użytkownika, procedur składowanych, wyzwalaczy ani ograniczeń sprawdzania. To zachowanie jest wystarczające dla różnych baz danych.
Można użyć DataContext.CreateDatabase metody w dowolnej liczbie scenariuszy, zwłaszcza jeśli jest dostępny znany dostawca danych, taki jak Microsoft SQL Server 2008. Typowe scenariusze obejmują następujące elementy:
Tworzysz aplikację, która automatycznie instaluje się w systemie klienta.
Tworzysz aplikację kliencką, która wymaga lokalnej bazy danych w celu zapisania stanu offline.
Możesz również użyć DataContext.CreateDatabase metody z programem SQL Server przy użyciu pliku .mdf lub nazwy katalogu, w zależności od parametry połączenia. LINQ to SQL używa parametry połączenia do definiowania bazy danych do utworzenia i na którym serwerze ma zostać utworzona baza danych.
Uwaga
Jeśli to możliwe, użyj zabezpieczeń zintegrowanych systemu Windows, aby nawiązać połączenie z bazą danych, aby hasła nie są wymagane w parametry połączenia.
Przykład 1
Poniższy kod zawiera przykład tworzenia nowej bazy danych o nazwie MyDVDs.mdf.
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
Przykład 2
Za pomocą modelu obiektów można utworzyć bazę danych, wykonując następujące czynności:
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
Przykład 3
Podczas kompilowania aplikacji, która automatycznie instaluje się w systemie klienta, sprawdź, czy baza danych już istnieje i upuść ją przed utworzeniem nowego. Klasa DataContext udostępnia DatabaseExists metody i DeleteDatabase ułatwiające wykonanie tego procesu.
W poniższym przykładzie pokazano jeden ze sposobów, w jaki można zastosować te metody w celu zaimplementowania tego podejścia:
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