2007-07-24

Erstellen Datenbank aus Entity Klassen

Die Entity Klassen sind mit Metadaten der Datenbanktabellen versehen, die Eigenschaften der Tabellen und Feldern sind. Auch die Beziehungen zwischen den Tabellen sind als Metadaten vorhanden innerhalb dieser Klassen vorhanden.

Sie können ab Metadaten der Entity Klassen eine Datenbank mit Tabellen und Felder erstellen. Weil die Beziehungen zwischen den Tabellen auch als Metadaten vorhanden sind, können die Beziehungen auch mit Hilfe der der DataContext Klasse erstellt werden.

Ein praktisches Beispiel ist, wenn Sie Ihre Applikation an Ihre Kunden weitergeben und keine SQL Script Dateien liefern möchten oder wenn Sie eine lokale Datenbank für Ihre Applikationsdatenbank mit SQL Server Express Edition erstellen möchten. Dann können Sie die Struktur Ihrer Datenbank in Ihre Applikation mit Entity Klassen abbilden und mit MetaDaten dieser Klassen Ihre Datenbank erstellen lassen. Für diesen Fall benötigt Ihre Kunde einen SQL Server Datenbank und eine Verbindung zu dieser Datenbank mit genügenden Rechten für die Erstellung der Datenbankobjekte.

Die CreateDatabase() Methode der DataContext Klasse erstellt eine Datenbank. Für die Erstellung dieser Datenbank verwendet die Methode die Attributen Ihrer Entity Klassen. Aus diesem Grudn ist es wichtig, dass die Attributen und Eigenschaften innerhalb der Entity Klassen präziser definiert sind.

Wenn Sie sicherstellen möchten, ob eine Datenbank bereits existiert oder nicht, können die DatabaseExists() Methode der DataContext Klasse verwenden. Mit Hilfe dieser Methode wird geprüft, ob die im ConnectionString angegebene Datenbank auf dem SQL Server bereits existiert.

Eine bestehende Datenbank könne Sie mit Hilfe der DeleteDatabase() Methode löschen. Für die Löschung wird die im ConnectionString angegebene Datenbank verwendet.

In einem Beispielcode wird gezeigt, wie Sie diese drei Methode verwenden können.

Folgender Code prüft zuerst mit der DatabaseExists() Methode ob die Datenbank vorhanden ist. Wenn die Datenbank auf dem Server existiert, wird sie mit DeleteDatabase() Methode gelöscht.

Am Schluss der Code wird die Datenbank mit der CreateDatabase() Methode erstellt.
string connString = "Data Source=.;Initial Catalog=AdventureWorks;Integrated Security=True";

DataContext db = new DataContext(connString);
if (db.DatabaseExists)
{
db.DeleteDatabase();
}
db.CreateDatabase();

No comments: