Criar recursos de personalizado para projetos de banco de dados

Você pode estender o banco de dados existente tipos de projeto, adicionando seus próprios recursos. Por exemplo, você pode criar um recurso que faz algo sempre que um projeto de banco de dados é carregado ou salvo. Você também pode criar seu próprio provedor de esquema do banco de dados e o suporte de sistema de projeto. No entanto, esse tipo de extensibilidade não é abordado este conteúdo.

Tarefas comuns

Tarefas comuns

Conteúdo de apoio

Saiba mais sobre os pontos de extensibilidade: Você pode ler sobre o projeto de extensibilidade do projeto de banco de dados.

  • Metas de extensibilidade do projeto

  • Assemblies de modelo de componente

  • Pontos de extensibilidade

  • O ciclo de vida de projeto de banco de dados

  • Gerenciamento de erro

Crie um recurso de projeto de amostra: Aprenda as etapas necessárias para criar um recurso de projeto personalizado que exibe uma caixa de diálogo quando um projeto de banco de dados é carregado. Se você seguir estas instruções passo a passo, você irá:

  • Criar um Visual Studio pacote.

  • Personalize o pacote para criar um recurso de projeto de banco de dados.

  • Criar, instalar e testar seu novo recurso do projeto.

Instale um recurso de projeto personalizado: Depois de criar e construir um recurso de projeto, você deve instalá-lo antes de Visual Studio reconhecerá o proprietário.

Metas de extensibilidade do projeto

As principais metas para o banco de dados do projeto os recursos de extensibilidade no Visual Studio 2010 são da seguinte maneira:

  • Expor os principais componentes por meio de interfaces
    Essa abordagem mantém o sistema de projeto consistente com o modelo de esquema, usando interfaces em vez de classes abstratas. Espera-se que uma única classe concreta implementar várias interfaces.

  • Recursos são criados pelo Gerenciador de extensibilidade
    Recursos são responsáveis por partes principais do sistema, inclusive o Solution Explorer, a visualização Esquema, a atualização de projeto e propriedades do projeto.

  • Recursos podem ser estendidos.
    Recursos podem usar o Gerenciador de extensibilidade, XML arquivos, registro ou outras abordagens para fornecer extensibilidade.

  • Os serviços são expostos por meio de sua própria interface.
    DataPackageimplementa IServiceProvider. Qualquer cross talk entre os recursos deve ser tratado por nesses níveis de serviço. Você não deve expor o recurso do serviço. Em vez disso, crie uma nova interface, uma classe de wrapper e expor o wrapper do serviço.

  • Unidade de eventos de sistema do projeto
    O DataPackage e o ProjectNode() oferecem os eventos que permitem que os recursos orientar o sistema de projeto. Além disso, os recursos podem fornecer eventos por meio de suas interfaces de serviço. Em alguns casos, você pode decidir usar um delegado. Para decidir qual recurso manipula a ação, considere usar uma abordagem de evento onde os recursos podem interagir, com base na prioridade.

  • Não confie na ordenação dos ouvintes
    Se a ordem dos ouvintes para um evento for importante, considere a criação de um evento anterior ou posterior, ou considere a adição de uma propriedade de prioridade para a classe derivada de EventArg.

Assemblies de modelo de componente

Os assemblies a seguir fornecem o sistema de projeto de banco de dados em Visual Studio.

  • Microsoft.VisualStudio.Data.Schema.Package.dll
    A base de sistema de projeto e fornece para os eventos e o recurso de inicialização. Isso inclui recursos independente de banco de dados, como, por exemplo, scripts.

  • Microsoft.VisualStudio.Data.Schema.PackageUI.dll
    O assembly satélite para o pacote do banco de dados independente.

  • Microsoft.VisualStudio.Data.Schema.Package.SQL.dll
    O SQL Server-recursos específicos, editores e janelas de ferramentas Visual Studio.

  • Microsoft.VisualStudio.Data.Schema.Package.SqlUI.dll
    O assembly satélite para o SQL Server-recursos específicos, editores e ferramenta windows.

Pontos de extensibilidade

Você pode estender os pontos de acompanhamento do sistema de projeto de banco de dados:

O ciclo de vida de projeto de banco de dados

Cada arquivo de projeto de banco de dados (.dbproj) contém uma propriedade chamada "dsp" indicando específicos do DatabaseSchemaProvider que lida com este projeto, quando ele é aberto no Visual Studio. O sistema de projeto cria uma extensão manager usando este DSP e de que constrói a todos os colaboradores do sistema de projeto e os recursos do projeto. Cada recurso recebe um evento Initialize para que ele possa inicializar e raiz próprio para o sistema de projeto por ouvir eventos.

Os seguintes eventos são gerados durante o projeto, abrir e fechar e salvar:

  • NewProjectCreated
    Esse evento ocorre quando um projeto é criado. Você pode manipular esse evento para exibir assistentes ou caixas de diálogo de instalação.

  • ProjectOpening
    O projeto está abrindo. Você pode manipular esse evento para adicionar todos os serviços para o IDatabaseProjectNode.

  • ProjectOpened
    Esse evento ocorre quando todos os serviços foram adicionados e o projeto foi concluída a abertura. No entanto, projeto será ainda não tenha concluído a desserialização de seu estado anterior. O TaskHost e o DataSchemaModel será NULL até o ProjectLoaded evento é enviado.

  • ProjectLoaded
    O projeto está totalmente carregado. O TaskHost e DataSchemaModel estão prontas para uso.

  • ProjectClosing
    O projeto está fechando. Esta é uma boa oportunidade para manter as informações de estado que está fora do arquivo de projeto.

  • ProjectClosed
    O projeto é fechado.

  • ProjectSaving
    O projeto está realizando uma operação Salvar operação. Você pode usar isso como uma oportunidade para certificar-se de que o recurso está em um estado de sua persistência sejam armazenados.

  • ProjectSaved
    O projeto foi salvo.

Gerenciamento de erro

Cada projeto tem uma ErrorManager. Alguns erros são mantidos no arquivo .dbmdl e outros erros não são. Isso é controlado por meio de AddPersistedCategory classe. Por padrão, essas categorias são persistentes: ModelCategory, ValidationAtBuildCategory, and ValidationOnIdleCategory. Se você adicionar outra categoria persistente, que você terá que lidar com a recarga do projeto e verificar e gerenciar os erros. Lembre-se de que embora o projeto foi fechado, o usuário poderia ter editado o arquivo .dbproj para remover um arquivo para o qual você está relatando um erro. Seria muito confuso para os usuários para relatar um erro no projeto quando este arquivo não existe.

Os objetos de erro do banco de dados são adicionados para o ErrorManager em categorias específicas. A idéia é que os recursos do projeto podem gerenciar a vida útil de seus erros por meio do tempo de vida de sua categoria. Se você estiver preocupado com nomes de categoria em conflito com outros recursos use um GUID como o nome. O ErrorManager define várias categorias internas, incluindo:

  • DefaultCategory
    Essa categoria é destinada para uso erros cujos tempos de vida são iguais para o tempo de vida do projeto. Portanto, por exemplo, erros que ocorrem durante o carregamento do projeto são adicionados a esta categoria.

  • ModelCategory
    Esta categoria deve ser usada pelo Gerenciador de esquema quando encontra erros como, por exemplo, erros do analisador.

Cenários relacionados

Criar banco de dados personalizado refatoração tipos ou destinos

Criar e registrar regras adicionais para analisar o código do banco de dados

Gerar dados de teste especializado com um gerador de dados personalizados

Definir condições de personalizado para testes de unidade de banco de dados

Personalizar o banco de dados compilação e implantação usando a compilação e colaboradores de implantação

Consulte também

Conceitos

Estender os recursos de banco de dados de Visual Studio