Udostępnij za pośrednictwem


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

Zobacz też