Extensibilidade para projetos SQL
O DacFx (Data-tier Application Framework) do .NET fornece os pontos de extensibilidade que você pode usar para modificar o comportamento das ações de compilação e implantação de projetos de banco de dados.
- Compilação (BuildContributor): esse tipo de extensão é executado quando o projeto SQL é compilado depois que o modelo de projeto tiver sido completamente validado. O colaborador de compilação pode acessar o modelo concluído, além de todas as propriedades da tarefa de compilação e todos os argumentos personalizados.
- Implantação (DeploymentPlanModifier): esse tipo de extensão foi executado quando o projeto SQL foi implantado, como parte do pipeline de implantação, depois que o plano de implantação foi gerado, mas antes de o plano de implantação ser executado. Você pode usar um DeploymentPlanModifier para modificar o plano de implantação adicionando ou removendo etapas. Os colaboradores de implantação podem acessar o plano de implantação, os resultados da comparação e os modelos de origem e destino.
- Implantação (DeploymentPlanExecutor): Esse tipo de extensão é executado quando o plano de implantação é executado e fornece acesso somente leitura para o plano de implantação. O DeploymentPlanExecutor executa ações com base no plano de implantação.
Você pode implementar os colaborador de compilação ou implantação para habilitar os seguintes cenários de exemplo:
- Gerar a documentação do esquema durante a compilação do projeto - para dar suporte a esse cenário, você implementa um BuildContributor e substitui o método OnExecute para gerar a documentação do esquema. Você pode criar um arquivo de destino que define os argumentos padrão que controlam se a extensão é executada e para especificar o nome do arquivo de saída.
- Gerar um relatório de diferença quando um projeto SQL é implantado - para dar suporte a esse cenário, você implementa um DeploymentPlanExecutor que gera o arquivo XML quando o projeto SQL é implantado.
- Modificar o plano de implantação para alterar quando a movimentação dos dados ocorrer - para dar suporte a esse cenário, você implementa uma DeploymentPlanModifier e o itera no plano de implantação. Para cada SqlTableMigrationStep nesse plano, você examinará o resultado da comparação para determinar se essa etapa deve ser executada ou ignorada.
- Copiar os arquivos para o dacpac gerado quando um projeto SQL foi implantado - para dar suporte a esse cenário, você implementa um colaborador de implantação e substitui o método OnEstablishDeploymentConfiguration para especificar quais arquivos são marcados como DeploymentExtensionConfiguration pelo sistema de projeto. Esses arquivos devem ser copiados para a pasta de saída e adicionado ao dacpac gerado. Você também pode modificar o colaborador para mesclar vários arquivos em um novo arquivo que será copiado para a pasta de saída e adicionado ao manifesto de implantação. Durante a implantação, você pode implementar o método OnApplyDeploymentConfiguration para extrair os arquivos do dacpac e para prepará-los para serem usados no método OnExecute.
A extensibilidade pode ser controlada por pares personalizados de argumentos de nome/valor do colaborador. Esses argumentos permitem que os usuários finais no momento da compilação ou implantação personalizem o comportamento do colaborador. Por exemplo, você pode permitir que os usuários especifiquem o nome de um arquivo de entrada ou saída controlem a seleção de objetos a partir do modelo.
O processo de implantação para projetos SQL dá suporte à extensibilidade por meio de colaboradores de implantação, que acessam o plano de implantação e podem modificá-lo (DeploymentPlanModifier) ou implementar uma ação com base no plano (DeploymentPlanExecutor). Os colaboradores de implantação podem acessar o plano de implantação, os resultados da comparação e os modelos de origem e destino. Com um DeploymentPlanModifier, você pode usar colaboradores de implantação para adicionar ou remover etapas do plano de implantação ou para modificar as etapas no plano de implantação. Estes são os colaboradores de implantação usados com mais frequência
Os colaboradores de implantação são reutilizáveis por meio de parametrização e podem ser usados em vários projetos. Além dos exemplos arquivados para DacExtensions, os membros da comunidade criaram e compartilharam seus próprios colaboradores de implantação reutilizáveis como projetos de software livre.