Partilhar via


Como: Criar dinamicamente um banco de dados

No LINQ to SQL, um modelo de objeto é mapeado para um banco de dados relacional. O mapeamento é habilitado usando o mapeamento baseado em atributos ou um arquivo de mapeamento externo para descrever a estrutura do banco de dados relacional. Em ambos os cenários, há informações suficientes sobre o banco de dados relacional para que você possa criar uma nova instância do banco de dados usando o DataContext.CreateDatabase método.

O DataContext.CreateDatabase método cria uma réplica do banco de dados somente na extensão das informações codificadas no modelo de objeto. O mapeamento de arquivos e atributos do seu modelo de objeto pode não codificar tudo sobre a estrutura de um banco de dados existente. As informações de mapeamento não representam o conteúdo de funções definidas pelo usuário, procedimentos armazenados, gatilhos ou restrições de verificação. Esse comportamento é suficiente para uma variedade de bancos de dados.

Você pode usar o método em qualquer número de cenários, especialmente se um provedor de dados conhecido como o DataContext.CreateDatabase Microsoft SQL Server 2008 estiver disponível. Os cenários típicos incluem o seguinte:

  • Você está criando um aplicativo que se instala automaticamente em um sistema do cliente.

  • Você está criando um aplicativo cliente que precisa de um banco de dados local para salvar seu estado offline.

Você também pode usar o método com o DataContext.CreateDatabase SQL Server usando um arquivo .mdf ou um nome de catálogo, dependendo da cadeia de conexão. O LINQ to SQL usa a cadeia de conexão para definir o banco de dados a ser criado e em qual servidor o banco de dados deve ser criado.

Nota

Sempre que possível, use a Segurança Integrada do Windows para se conectar ao banco de dados para que as senhas não sejam necessárias na cadeia de conexão.

Exemplo 1

O código a seguir fornece um exemplo de como criar um novo banco de dados chamado 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

Exemplo 2

Você pode usar o modelo de objeto para criar um banco de dados fazendo o seguinte:

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

Exemplo 3

Ao criar um aplicativo que se instala automaticamente em um sistema do cliente, veja se o banco de dados já existe e solte-o antes de criar um novo. A DataContext classe fornece os DatabaseExists métodos e DeleteDatabase para ajudá-lo com esse processo.

O exemplo a seguir mostra uma maneira como esses métodos podem ser usados para implementar essa abordagem:

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

Consulte também