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:
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