Partager via


Procédure : créer dynamiquement une base de données (LINQ to SQL)

Mise à jour : November 2007

Dans LINQ to SQL, un modèle objet est mappé à une base de données relationnelle. Le mappage est activé à l'aide du mappage basé sur les attributs ou d'un fichier de mappage externe pour décrire la structure de la base de données relationnelle. Dans les deux scénarios, il existe suffisamment d'informations sur la base de données relationnelle pour pouvoir créer une nouvelle instance de la base de données à l'aide de la méthode DataContext.CreateDatabase.

La méthode DataContext.CreateDatabase crée un réplica de la base de données uniquement en fonction de l'étendue des informations codées dans le modèle objet. Les fichiers et les attributs de mappage de votre modèle objet ne peuvent pas coder l'ensemble des éléments de la structure d'une base de données existante. Les informations de mappage ne représentent pas le contenu de fonctions définies par l'utilisateur, de procédures stockées, de déclencheurs ou de contraintes de validation. Ce comportement est suffisant pour différentes bases de données.

Vous pouvez utiliser la méthode DataContext.CreateDatabase dans le nombre de scénarios souhaité, surtout si un fournisseur de données connu tel que Microsoft SQL Server 2008 est disponible. Dans les scénarios classiques :

  • Vous générez une application qui s'installe automatiquement sur le système d'un client.

  • Vous générez une application cliente qui a besoin d'une base de données locale pour enregistrer son état hors connexion.

Vous pouvez également utiliser la méthode DataContext.CreateDatabase avec SQL Server en utilisant un fichier .mdf ou un nom de catalogue, en fonction de votre chaîne de connexion. LINQ to SQL utilise la chaîne de connexion pour définir la base de données à créer et sur quel serveur la base de données sera créée.

Remarque :

Si possible, utilisez la sécurité intégrée Windows pour vous connecter à la base de données de façon à ce que les mots de passe ne soient pas requis dans la chaîne de connexion.

Exemple

Le code suivant fournit un exemple de création d'une nouvelle base de données nommée MyDVDs.mdf.

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
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;
}

Vous pouvez utiliser le modèle objet pour créer une base de données en procédant comme suit :

Public Sub CreateDatabase()
    Dim db As New MyDVDs("c:\...\mydvds.mdf")
    db.CreateDatabase()
End Sub
public void CreateDatabase()
{
    MyDVDs db = new MyDVDs("c:\\mydvds.mdf");
    db.CreateDatabase();
}

Lors de la création d'une application qui s'installe automatiquement sur le système d'un client, vérifiez si la base de données existe déjà et supprimez-la avant d'un créer une nouvelle. La classe DataContext fournit les méthodes DatabaseExists et DeleteDatabase pour vous aider dans cette tâche.

L'exemple suivant illustre une utilisation de ces méthodes pour implémenter cette approche :

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
public void CreateDatabase2()
{
    MyDVDs db = new MyDVDs(@"c:\mydvds.mdf");
    if (db.DatabaseExists())
    {
        Console.WriteLine("Deleting old database...");
        db.DeleteDatabase();
    }
    db.CreateDatabase();
}

Voir aussi

Référence

Mappage basé sur les attributs (LINQ to SQL)

Référence de mappage externe (LINQ to SQL)

Mappage de type SQL-CLR (LINQ to SQL)

Autres ressources

Informations générales (LINQ to SQL)

Apport et soumission de modifications de données (LINQ to SQL)