Procedure: Dynamisch een database maken
In LINQ naar SQL wordt een objectmodel toegewezen aan een relationele database. Toewijzing wordt ingeschakeld met behulp van toewijzing op basis van kenmerken of een extern toewijzingsbestand om de structuur van de relationele database te beschrijven. In beide scenario's is er voldoende informatie over de relationele database die u met behulp van de DataContext.CreateDatabase methode een nieuw exemplaar van de database kunt maken.
Met DataContext.CreateDatabase de methode wordt alleen een replica van de database gemaakt voor zover de informatie in het objectmodel is gecodeerd. Het is mogelijk dat toewijzingsbestanden en -kenmerken van uw objectmodel niet alles coderen over de structuur van een bestaande database. Toewijzingsgegevens vertegenwoordigen niet de inhoud van door de gebruiker gedefinieerde functies, opgeslagen procedures, triggers of controlebeperkingen. Dit gedrag is voldoende voor verschillende databases.
U kunt de DataContext.CreateDatabase methode in een willekeurig aantal scenario's gebruiken, met name als een bekende gegevensprovider, zoals Microsoft SQL Server 2008, beschikbaar is. Typische scenario's zijn onder andere:
U bouwt een toepassing die zichzelf automatisch op een klantsysteem installeert.
U bouwt een clienttoepassing die een lokale database nodig heeft om de offlinestatus op te slaan.
U kunt de DataContext.CreateDatabase methode ook gebruiken met SQL Server met behulp van een .mdf-bestand of een catalogusnaam, afhankelijk van uw verbindingsreeks. LINQ naar SQL maakt gebruik van de verbindingsreeks om de database te definiëren die moet worden gemaakt en op welke server de database moet worden gemaakt.
Notitie
Gebruik indien mogelijk geïntegreerde Windows-beveiliging om verbinding te maken met de database, zodat wachtwoorden niet vereist zijn in de verbindingsreeks.
Voorbeeld 1
De volgende code bevat een voorbeeld van het maken van een nieuwe database met de naam 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
Voorbeeld 2
U kunt het objectmodel gebruiken om een database te maken door het volgende te doen:
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
Voorbeeld 3
Wanneer u een toepassing bouwt die zichzelf automatisch op een klantsysteem installeert, controleert u of de database al bestaat en verwijdert u deze voordat u een nieuwe maakt. De DataContext klasse biedt de DatabaseExists en DeleteDatabase methoden om u te helpen met dit proces.
In het volgende voorbeeld ziet u een manier waarop deze methoden kunnen worden gebruikt om deze aanpak te implementeren:
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