Compartilhar via


Instruções passo a passo: gerando tipos F# com base em um arquivo DBML (F#)

Essa explicação passo a passo para F# 3.0 descreve como criar tipos de dados de um banco de dados quando você tem informações de esquema codificadas em um arquivo .dbml. LINQ to SQL usa esse formato de arquivo para representar o esquema do banco de dados. Você pode gerar um arquivo de esquema LINQ to SQL no Visual Studio usando o Object Relational (O/R) Designer. Para obter mais informações, consulte Visão geral do designer do/R e Geração de código em LINQ para SQL.

O provedor do tipo de linguagem de marcação de banco de dados (Database Markup Language - DBML) permite que você escreva código que use os tipos baseados em um esquema de banco de dados sem exigir que você especifique uma cadeia de conexão estática em tempo de compilação. Isso pode ser útil se você precisar permitir a possibilidade de que o aplicativo final use um banco de dados diferente, credenciais diferentes, ou uma cadeia de conexão diferente daquela que você usa para desenvolver o aplicativo. Se você tiver uma conexão de banco de dados direta que você possa usar em tempo de compilação e esses forem os mesmos banco de dados e credenciais que você usará eventualmente em seu aplicativo criado, você também pode usar o provedor do tipo SQLDataConnection. Para obter mais informações, consulte Instruções passo a passo: acessando um banco de dados SQL por meio de provedores de tipos (F#).

Essa explicação passo a passo ilustra as seguintes tarefas: Devem ser concluídos nessa ordem para que a explicação seja bem sucedida:

  • Criando um arquivo .dbml

  • Criando e configurando um projeto de F#

  • Configurando o provedor de tipo

  • Consultando o banco de dados

Criando um arquivo .dbml

Se você não tiver um banco de dados sobre o qual testar, crie um seguindo as instruções na parte inferior de Instruções passo a passo: acessando um banco de dados SQL por meio de provedores de tipos (F#). Se você seguir estas instruções, você criará um banco de dados chamado MyDatabase que contém algumas simples tabelas e procedimentos armazenados no seu SQL Server.

Se você já tiver um arquivo .dbml, você pode ir para a seção, Criando e configurando um projeto de F#. Caso contrário, você pode criar um arquivo .dbml dado um banco de dados SQL existente e usando a ferramenta de linha de comando SqlMetal.exe.

Para criar um arquivo .dbml usando SqlMetal.exe

  1. Abra um Prompt de Comando do Desenvolvedor.

  2. Certifique-se de que você tenha acesso a SqlMetal.exe inserindo SqlMetal.exe /? no prompt de comando. Normalmente SqlMetal.exe é instalado na pasta de Microsoft SDKs em Arquivos de Programas ou em Arquivos de Programas (x86).

  3. Execute SqlMetal.exe com as seguintes opções de linha de comando. Substitua um caminho apropriado no lugar de c:\destpath para criar o arquivo .dbml, e insira valores apropriados de inserção para o servidor de banco de dados, o nome de instância, e o nome do banco de dados.

    SqlMetal.exe /sprocs /dbml:C:\destpath\MyDatabase.dbml /server:SERVER\INSTANCE /database:MyDatabase
    

    Dica

    Se SqlMetal.exe tiver problemas ao criar o arquivo devido a problemas de permissões, altere o diretório atual para uma pasta sobre a qual você tenha acesso de gravação.

  4. Você também pode examinar as outras opções de linha de comando disponíveis. Por exemplo, há opções que você pode usar se você desejar modos de exibição e funções SQL incluídos nos tipos gerados. Para obter mais informações, consulte SqlMetal.exe (ferramenta de geração de código).

Criando e configurando um projeto de F#

Nesta etapa, você cria um projeto e adiciona referências apropriadas para usar o provedor do tipo DBML.

Para criar e configurar um projeto de F#

  1. Adicione um novo projeto de Aplicativo de Console de F# à sua solução.

  2. No Gerenciador de Soluções, abra o menu de atalho para Referências, e então clique em Adicionar Referência.

  3. Na área de Assemblies, escolha o nó de Estrutura e, em seguida, na lista de assemblies disponíveis, escolha os assemblies de System.Data e de System.Data.Linq .

  4. Na área de Assemblies, escolha Extensões e, em seguida, na lista de conjuntos disponíveis, escolha FSharp.Data.TypeProviders.

  5. Escolha o botão de OK para adicionar referências a esses assemblies ao seu projeto.

  6. (Opcional). Copie o arquivo .dbml que você criou na etapa anterior, e cole o arquivo na pasta principal para seu projeto. Esta pasta contém o arquivo do projeto (.fsproj) e arquivos de código. Na barra de menu, escolha Projeto, Adicionar item existente, e então especifique o arquivo .dbml para adicioná-lo ao seu projeto. Se você concluir essas etapas, você pode omitir o parâmetro estático de ResolutionFolder na próxima etapa.

Configurando o provedor de tipo

Nesta seção, você cria um provedor de tipo e gera tipos a partir do esquema que é descrito no arquivo .dbml.

Para configurar o provedor de tipo e gerar os tipos

  • Adicione código que abra o namespace de TypeProviders e crie uma instância do provedor de tipo para o arquivo .dbml que você deseja usar. Se você adicionou o arquivo .dbml ao seu projeto, você pode omitir o parâmetro estático de ResolutionFolder.

    open Microsoft.FSharp.Data.TypeProviders
    
    
    type dbml = DbmlFile<"MyDatabase.dbml", ResolutionFolder = @"<path to folder that contains .dbml file>>
    
    // This connection string can be specified at run time.
    let connectionString = "Data Source=MYSERVER\INSTANCE;Initial Catalog=MyDatabase;Integrated Security=SSPI;"
    let dataContext = new dbml.Mydatabase(connectionString)
    

    O tipo DataContext fornece acesso a todos os tipos gerados e herda de DataContext. O provedor de tipo do DbmlFile tem vários parâmetros estáticos que você pode definir. Por exemplo, você pode usar um nome diferente para o tipo DataContext especificando DataContext=MyDataContext. Nesse caso, o código é semelhante ao seguinte exemplo:

    open Microsoft.FSharp.Data.TypeProviders
    
    
    
    type dbml = DbmlFile<"MyDatabase.dbml",
                         ContextTypeName = "MyDataContext">
    
    // This connection string can be specified at run time.
    let connectionString = "Data Source=MYSERVER\INSTANCE;Initial Catalog=MyDatabase;Integrated Security=SSPI;"
    let db = new dbml.MyDataContext(connectionString)
    

Consultando o banco de dados

Nesta seção, você usa expressões de consulta de F# para consultar o banco de dados.

Para consultar os dados

  • Adicione código para consultar o banco de dados.

    query {
            for row in db.Table1 do
            where (row.TestData1 > 2)
            select row
    }
    |> Seq.iter (fun row -> printfn "%d %s" row.TestData1 row.Name)
    

Próximas etapas

Você pode continuar a usar outras expressões de consulta, ou obter uma conexão de banco de dados do contexto de dados e executar operações normais de dados ADO.NET. Para etapas adicionais, consulte as seções após “Consulta de Dados” em Instruções passo a passo: acessando um banco de dados SQL por meio de provedores de tipos (F#).

Consulte também

Tarefas

Instruções passo a passo: acessando um banco de dados SQL por meio de provedores de tipos (F#)

Referência

Provedor de tipo DbmlFile (F#)

SqlMetal.exe (ferramenta de geração de código)

Expressões de consulta (F#)

Outros recursos

Provedores de tipos