Dela via


Gör så här: Skapa en databas dynamiskt

I LINQ till SQL mappas en objektmodell till en relationsdatabas. Mappning aktiveras med hjälp av attributbaserad mappning eller en extern mappningsfil för att beskriva relationsdatabasens struktur. I båda scenarierna finns det tillräckligt med information om relationsdatabasen för att du ska kunna skapa en ny instans av databasen med hjälp DataContext.CreateDatabase av metoden.

Metoden DataContext.CreateDatabase skapar en replik av databasen endast i den omfattning av informationen som kodas i objektmodellen. Mappning av filer och attribut från objektmodellen kanske inte kodar allt om strukturen för en befintlig databas. Mappningsinformation representerar inte innehållet i användardefinierade funktioner, lagrade procedurer, utlösare eller kontrollbegränsningar. Det här beteendet räcker för en mängd olika databaser.

Du kan använda DataContext.CreateDatabase metoden i valfritt antal scenarier, särskilt om en känd dataprovider som Microsoft SQL Server 2008 är tillgänglig. Vanliga scenarier är följande:

  • Du skapar ett program som automatiskt installerar sig själv i ett kundsystem.

  • Du skapar ett klientprogram som behöver en lokal databas för att spara dess offlinetillstånd.

Du kan också använda DataContext.CreateDatabase metoden med SQL Server med hjälp av en .mdf fil eller ett katalognamn, beroende på din anslutningssträng. LINQ till SQL använder anslutningssträng för att definiera databasen som ska skapas och på vilken server databasen ska skapas.

Kommentar

När det är möjligt använder du Windows Integrated Security för att ansluta till databasen så att lösenord inte krävs i anslutningssträng.

Exempel 1

Följande kod innehåller ett exempel på hur du skapar en ny databas med namnet 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

Exempel 2

Du kan använda objektmodellen för att skapa en databas genom att göra följande:

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

Exempel 3

När du skapar ett program som automatiskt installerar sig själv i ett kundsystem ska du se om databasen redan finns och släppa den innan du skapar en ny. Klassen DataContext innehåller DatabaseExists metoderna och DeleteDatabase som hjälper dig med den här processen.

I följande exempel visas ett sätt som dessa metoder kan användas för att implementera den här metoden:

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

Se även