LINQ to SQL - Usando a ferramenta de linha de comando : SQL Metal


O LINQ to SQL possui um ferramenta a nível de linha de comando chamada SQL Metal que permite gerar classes de entidades, propriedades e associações de forma automática. É mais uma opção visto que você pode obter o mesmo resultado usando o Editor Visual do LINQ ou via código.

A localização padrão do SQLMetal é : \Programa Arquivos\Microsoft SDKs\Windows\vn.nn\Bin

As vezes ela pode ser a única opção disponível por isso é bom conhecer um pouco sobre ela. Conhecendo as opções disponíveis você pode usar o SQL Metal para efetuar uma das seguintes ações:

  • A partir de um banco de dados, gerar código-fonte e atributos de mapeamento ou um arquivo de mapeamento;
  • A partir de um banco de dados, gerar um arquivo intermediário de linguagem de marcação de banco de dados (.dbml) para customização;
  • A partir de um arquivo .dbml, gerar código e atributos de mapeamento ou um arquivo de mapeamento;
  • O Sql Metal atua em duas etapas:

    Para usar a ferramenta você precisa conhecer as opções disponíveis:

     Opção Descrição
     /server:<name>    Representa o nome do SQL Server com o qual é feita a conexão
     /database:<name>    Representa o nome do banco de dados usado para gerar a classes de entidades
     /user:<name> Representa o nome do usuário usado para efetuar a conexão
     /password:<name> Representa a senha do usuário usado para efetuar a conexão
     /conn:connectionString Permite definir uma string de conexão com o banco de dados
     /timeout:<value> Permite definir o timeout (em segundos) para o usuário para cada comando
     /views Obtêm as views do banco de dados
     /sprocs Obtêm as funções do usuário do banco de dados
     /dbml:<filename> Permite definir um nome de arquivo dbml que conterá os metadados do banco de dados
    e informação sobre classes e propriedades
     /code:<filename> Permite definir o nome do arquivo que conterá as classes de entidades e o data context
     /map:<filename> Obtêm um arquivo XML externo com atributos de mapeamento. As entidades produzidas
    no código não conterão classes e declaração de atributos de propriedades visto que elas
    são incluídas no arquivo de mapeamento XML
     /language:<name> Existem duas opções: C# ( o padrão ) e VB.
     /namespace Permite definir o namespace que irá conter as classes de entidades geradas
     /context:<name> Você pode definir o nome da classe derivada pela classe DataContext.
     /entitybaet:<name> Você pode indicar o nome da classe de entidade base a partir da qual outras entidades
    irão herdar
     /pluralize Obtêm a classe de entidade e nomes das propriedades
     /serialization:<name> Gera classes serializáveis. Valores possíveis: None e Undirecional.
     /provider:<name> Permite definir o nome do provedor a ser usado para conectar com o banco de dados
    valores possíveis: SQLCompact, SQL2000 e SQL2005

    Usando as opções de linha de comando apropriadas, você pode produzir Visual Basic ou código de origem do C#, ou você pode produzir um arquivo de mapeamento XML.

    Vejamos a seguir um exemplo de comando usando o SQLMetal para gerar classes de entidades para acessar um hipotético banco de dados Cadastro no SQL Server 2005 usando a segurança integrada do Windows:

    sqlmetal /server:Macoratti /database:Cadastro /pluralize /code:Cadastro.cs

    Se você precisar usar a segurança do SQL Server deverá incluir mais duas opções a linha de comando acima definindo o usuário e a senha:

    sqlmetal /server:Macoratti /database:Cadastro /user:sa /password:secret /pluralize /code:Cadastro.cs

    A seguir um outro exemplo de linha de comando para gerar as classes de entidades apenas definindo o caminho do banco de dados .MDF :

    sqlmetal /pluralize /code:Cadastro.cs c:\dados\Cadastro.mdf

    Um exemplo bem prático de uso do SQL Metal é se você estiver usando as versões Express e precisar gerar um arquivo DBML para um banco de dados que não reside na sua máquina local.

    Para realizar tal tarefa você pode usar o SQL Metal para gerar o mapeamento para um arquivo SQL Server em um servidor remoto. Os passos necessárias são:

    Passo 1:
    Abra um prompt de linha de comando e navegue até: \Programa Arquivos\Microsoft SDKs\Windows\vn.nn\Bin ; (vn.nn e a sua versão)

    Passo 2:
    Tenha a mão a string de conexão definida para efetuar a conexão;

    Passo 3:
    Execute a seguinte linha de comando no prompt : sqlmetal /conn:”sua_string_conexão” /dbml:NomeBancodeDados.dbml

    Outra dica de uso para esta ferramenta é gerar o mapeamento para um banco de dados do SQL Server Compact 3.5. (Aguarde em breve artigo sobre o assunto).

    Uma boa novidade é que o SQL Metal ganhou uma versão com uma interface gráfica - SQL Metal Open Source User Interface que pode ser configurada para ser usada de forma integrada com o Visual Studio.

    Talvez você nunca precise usar a ferramenta SQL Metal mas é bom prevenir e pelo menos saber que ela existe.

     Até o próximo artigo...


    José Carlos Macoratti