BT

Migrations estilo Rails no .NET

por Al Tenhundfeld , traduzido por Douglas Masson em 27 Jan 2009 |

Controlar a versão do esquema de banco de dados junto com seu código .NET é essencial para o gerenciamento dos codebase voláteis especialmente quando empregam a integração continua. Várias equipes no mundo .NET usam scripts manuscritos ou ferramentas de comparação de esquema. O Ruby on Rails realiza isto com uma solução popular de abstrair DDL SQL nos comandos Ruby chamados de migrations.

A migration Rails a seguir, escrita em Ruby, define a ação para criar e apagar a tabela de usuários no seu banco de dados:

Rails Migration

Usando a biblioteca RikMigrations, um código similar pode ser escrito em C#:

RikMigration in C#

O conceito importante para entender é que toda a DDL que define o esquema do banco de dados foi abstraída e migrada para o código da aplicação. Isto tem várias vantagens:

  • Neutralidade da plataforma do banco de dados
  • Abstraindo o DDL em métodos .NET, desenvolvedores podem escrever o código para criar a tabela apenas uma vez. A biblioteca de migração lidará com a tradução do código .NET em variações da plataforma do banco de dados. Não existe mais a necessidade de manter um conjunto de scripts para instalações Oracle e separar o conjunto de scripts para a instalação do SQL Server.
  • Versioning integrado
  • Assumindo que o código de migração é mantido como código da aplicação em umrepositório de controle de código, o código de migração será facilmente manipulado (tags e branchs), garantido que um banco de dados compatível possa ser construído em qualquer versão do codebase.
  • Atualização automática e downgrade de paths
  • Migrações normalmente têm um método Up e um método Down. O método Up define ações de modificar o banco de dados, ex.,criar uma tabela e o método Down define ações para desfazer a operação, ex., remover a tabela. Se as migrações são versionadas e rotuladas com o resto do código, isto significa que você automaticamente terá um patch de atualização para migrar um banco de dados mais antigo para a atual versão das migrations de abertura.

As migrations ainda não são amplamente utilizadas na comunidade .NET. A não familiaridade com a abordagem representa muito mais do que isso, mas há alguns argumentos válidos contra as migrations. Muitas equipes .NET fazem amplo uso dos stored procedures no bando de dados. Para sistemas que utilizam stored procedures, uma abordagem de script versionados pode funcionar melhor e é provável que a neutralidade da plataforma não seja uma preocupação. Também para as grandes aplicações que tem gerenciamento de banco de dados por DBA, migrar o DDL para o código .NET pode não ser uma opção.

Existem duas bibliotecas de migração para .NET que tem comunidades crescentes: RikMigrations(código) e Migrator.NET .

RikMigrations tem sido a biblioteca mais popular, suportando uma interface mais fluente e uma interface de linha de comando. Entretanto, o principal desenvolvedor parou de contribuir no meio do ano passado. Migrator.NET está crescendo em popularidade e rapidamente amadurece com nova interface fluente e integração automática. Ambos são pequenos projetos open source que poderiam utilizar mais apoio da comunidade de desenvolvedores.

Justin Etheredge, C# MVP, escreveu um tutorial sobre como iniciar com o RikMigrations, incluindo dicas úteis na configuração.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT