Pergunta

Eu tenho jogado com a Entity Framework 4, usando a abordagem orientada para o modelo para gerar o script de banco de dados a partir de minhas entidades. Isso é ótimo, mas não tenho certeza de como isso funciona quando se trata de versões no banco de dados. Suponho que, se eu quisesse usar uma estrutura de migração de tipo de registro ativo, teria que trabalhar o contrário e gerar minhas entidades a partir do meu banco de dados? Existe alguma maneira de usar a abordagem e a versão orientadas pelo modelo corretamente o banco de dados?

Foi útil?

Solução

Isso estará chegando em breve como um pacote Nuget chamado entityframework.migrações

Uma demonstração foi realizada por Scott Hanselman em Teched 2011 (disponível online em http://channel9.msdn.com/events/teched/northamerica/2011/dev349). A seção relevante é de 45 minutos.

Em resumo, depois que o pacote for instalado, você inserirá o seguinte no console do gerenciador de pacotes para gerar um script de alteração do banco de dados:

migrate -script

Atualização (13-Nov-2011)

A construção do Alpha 3 deste pacote já está disponível no NUGET. Em vez de usar o cmdlet migrate -script mencionado acima, ele usa o cmdlet Add-Migration <migrationname>. UMA passo a passo de seu uso Pode ser encontrado no blog da equipe do ADO.NET.

ATUALIZAÇÃO (14-FEB-2012)

Esta funcionalidade está agora disponível como parte do principal ENTITYFRAMEWORK NUGET PACOTE, começando com a versão 4.3. Um Atualizado a passo O uso da EF 4.3 pode ser encontrado no blog da equipe do ADO.NET.

Outras dicas

Podes tentar Wizardby: Esta é uma ferramenta para gerenciar as migrações de banco de dados. Ele não se integra à EF (já que é quase impossível se integrar a esse respeito), mas faz o trabalho.

Scottgu menciona algo sobre isso em um entrada no blog:

Também suportaremos um recurso de "migrações" com a EF no futuro que permitirá que você automatize/scripts Script Database Schema Migrations Programmataticamente.

EDITAR

Eu acho que ele pode estar se referindo ao Pacote de energia de geração de banco de dados de designer de entidades, como respondido por Morteza Manavi em Outra resposta.

Bem, se você deseja trabalhar como o ActiveRecord, então precisa trabalhar como o ActiveRecord. :)

No entanto, se você deseja usar o Model-First, mas ainda usar migrações, isso será possível, mas exigirá um trabalho extra em seu nome. O Model-First gerará um script de alteração do banco de dados. Você precisará extrair as peças relevantes para as migrações, bem como escrever manualmente os scripts de desfazer. Embora isso envolva algum trabalho manual, isso não me parece terrivelmente difícil.

Estou trabalhando em uma alternativa à Biblioteca EF.Migrações - Entityframework.schemacompare. Ele permite comparar fisicamente um esquema de banco de dados com um modelo de entidades representando o contexto do banco de dados (ef.migrações não o fazem). Isso pode ser disparado durante a inicialização do banco de dados ou manualmente, mediante solicitação. Considere o seguinte exemplo

#if DEBUG
Database.SetInitializer(new CheckCompatibilityWithModel<DatabaseContext>());
#endif

Ele lançará uma exceção durante a inicialização do banco de dados que descreve as diferenças entre o esquema e o modelo de DB se forem encontrados problemas de incompatibilidade. Como alternativa, você pode encontrar essas diferenças a qualquer momento do seu código dessa maneira

using (var ctx = new DatabaseContext())
{
    var issues = ctx.Database.FindCompatibilityIssues();
}

Em seguida, com essas diferenças / problemas de incompatibilidade nas mãos, você pode atualizar o esquema do banco de dados ou o modelo.

Essa abordagem é particularmente útil quando você precisa de controle completo sobre o esquema de banco de dados e o design do modelo e/ou trabalhar em uma equipe em que vários membros da equipe estão trabalhando no mesmo esquema e modelo de banco de dados. Também pode ser usado além das migrações ef.

Fire -me no Github: https://github.com/kriasoft/data

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top