Compartilhar via


Uma visão geral da extensibilidade do gerador de dados

Você pode usar Visual Studio Premium ou Visual Studio Ultimate para gerar dados significativos para teste. Usando os geradores de dados incorporada, gerar dados aleatórios, gerar dados de fontes de dados existentes e controlar vários aspectos da geração de dados. Se a funcionalidade dos geradores de internas for insuficiente, você pode criar os geradores de dados personalizados. Para criar os geradores de dados personalizados, você pode usar as classes de Microsoft.Data.Schema.Tools.DataGenerator namespace.

A API de extensibilidade de gerador de dados

A API de extensibilidade fornece a partir do qual os desenvolvedores podem herdar de classes. Além de classes, a API inclui atributos que podem ser aplicadas às classes derivadas. Ao aplicar esses atributos, você pode reduzir a quantidade de código que é necessário em geradores personalizados para os casos comuns.

Você pode usar a API de extensibilidade em três procedimentos a seguir para criar os geradores de dados personalizados:

Extensibilidade

Descrição

Dificuldade

Exemplo

Extensibilidade declarativa

Fácil

O gerador de dados internos, inteiro

Extensibilidade normal

Médio. Este método é recomendado na maioria das vezes.

Demonstra Passo a passo: Criando um gerador de dados personalizados

Demonstra Passo a passo: Criando um gerador de dados personalizado para um teste de verificação

Extensibilidade de base

  • Crie uma nova classe que implemente a interface IGenerator.

  • Todos os métodos que são exigidos pelo seu gerador de implementar.

  • Criar um designer personalizado para o gerador que implementa o IDesigner.

  • Implemente todos os métodos que são exigidos pelo seu criador.

Difícil

Nenhum

Extensibilidade de base

A API de extensibilidade de base é o mecanismo pelo qual o mecanismo de geração de dados e os designers de planos de geração de dados interagem. Essa API foi projetada para atender aos seguintes objetivos:

  • Robustez — Para promover uma implementação consistente e robusta em ambos os mecanismos de tempo de design e tempo de execução.

  • Flexibilidade — Para oferecer suporte a complexos geradores como, por exemplo, os dados vinculados gerador.

Uma compensação do design implícito na API de extensibilidade base é a mais complexa do que a API de extensibilidade declarativa nível mais alto.

Registrando os geradores de dados personalizados

Antes de usar o gerador de dados personalizados, você deve registrá-lo em seu computador. Se você estiver fazendo o seu gerador de dados personalizados para outras pessoas usem, eles devem registrar o gerador de seus computadores.

Você pode registrar os geradores de dados personalizados das seguintes maneiras:

Método

Permissões necessárias

Exemplo

Registre o gerador na pasta Extensions.

Usuário avançado ou superior

Crie um projeto de implantação para registrar o gerador.

Administrador

  • Nenhum

Designers, distribuições e geradores de dados

Você pode criar os geradores de dados personalizados e designers personalizados para esses geradores. Você também pode criar distribuições de personalizado de geradores de dados numéricos e designers personalizados para as distribuições.

  • Geradores de dados personalizados produzem dados de teste aleatório, de acordo com um conjunto de regras que você especificar. Você pode usar o designer de padrão com esses geradores ou você pode criar um designer personalizado para eles por herança de DefaultGeneratorDesigner. Por exemplo, o gerador de dados de expressão regular é um gerador de interno, mas ele usa um designer personalizado para que ele possa realizar a validação personalizada de entradas de usuário em tempo de design.

  • Usando um designer personalizado de gerador, você pode personalizar propriedades como entradas e saídas são recuperados do usuário, definir valores padrão e especificar o comportamento de validação.

  • Usando uma distribuição personalizada, você pode controlar a distribuição dos valores numéricos que gera a um gerador de dados.

  • Designers de distribuição personalizado controlam o comportamento de tempo de design para uma distribuição personalizado. Esse comportamento inclui obtendo os nomes das propriedades de entrada para a distribuição, definindo os valores padrão das propriedades de entrada e validar os valores das propriedades de entrada para a distribuição.

Localização e geradores de dados

Os geradores de dados que estão incluídos no Visual Studio Premium e Visual Studio Ultimate são localizadas porque Visual Studio vem várias versões de idioma. Você provavelmente não precisará localizar seus geradores de dados personalizados. Se for necessário criar um gerador de dados que será localizado, você deve criar um designer personalizado. Você também pode substituir o GetInputs método para localizar nomes de propriedade de entrada.

ObservaçãoObservação

Se possível, você deve herdar a DefaultGeneratorDesigner da classe, não implementa o IDesigner interface, para evitar trabalho extra.

Instanciação de gerador de dados

Geradores de dados personalizados podem compartilhar dados. O escopo dos dados compartilhados é a tabela de banco de dados e o tipo de gerador. Cada tipo de gerador tem um dicionário de instância exclusiva para cada tabela do banco de dados. Por exemplo, um gerador de dados personalizados para uma tabela chamada clientes tem acesso a um dicionário compartilhado. Você pode colocar qualquer informação no dicionário e compartilhar essas informações. O dicionário é garantido para ser a mesma instância para cada tipo de gerador e a tabela. Por exemplo, você pode criar um gerador de dados personalizados e solicitar o dicionário do GeneratorInit. Em seguida, você pode verificar se o dicionário contém informações compartilhadas. Em caso afirmativo, você pode usar as informações para gerar os dados. Você também pode criar as informações compartilhadas que outras instâncias do seu gerador de podem usar.

ObservaçãoObservação

Gerador de instância é uma técnica avançada. Você pode usar o gerador de instância para criar um gerador de dados personalizados que alças de seleção restrições em colunas — por exemplo, uma restrição check que requer que uma coluna é maior que a outra coluna.

O processo de geração de dados

Geração de dados ocorre nas seguintes fases:

Determine o tipo de designer

Tempo de design

Essa fase requer o tipo de gerador de dados como entrada. O mecanismo pode consultar a GeneratorAttribute para recuperar o tipo de designer. Maioria das vezes, GeneratorAttribute é herdada da classe base, que especifica o padrão do designer.

Instanciar e inicializar o designer

Tempo de design

O designer é instanciado. O designer é inicializado chamando Initialize e passando o tipo de gerador, como um argumento.

Recuperar os descritores de entrada

Tempo de design

O InputDescriptor é recuperado do designer. O designer do padrão faz isso, recuperando todas as propriedades do gerador de dados que são marcados com o InputAttribute.

Definir os valores padrão

Tempo de design

Os valores padrão são definidos.

Obtenha o gerador de descrições de saída

Tempo de design

O OutputDescriptor é recuperado do designer. O designer do padrão usa as propriedades que são marcadas com OutputAttribute para criar as descrições que aparecem na Gerador de saída coluna da Detalhes da coluna janela.

O gerador de instanciar

Tempo de execução

O gerador de dados é instanciado, usando o construtor padrão.

Definir as entradas do gerador

Tempo de execução

Todos os valores de entrada são definidos no gerador de dados de descritores de entrada que são recuperados do designer.

Validar o gerador

Tempo de execução

O ValidateInputs método é chamado. Se a validação falhar, o gerador lançará um InputValidationException exceção. Qualquer exceção diferente, por exemplo, uma exceção de validação de dados é tratada como um erro irrecuperável.

Inicializar o gerador

Tempo de execução

O Initialize método é chamado. Esta etapa permite que o gerador de dados executar qualquer configuração necessária antes de ocorre a geração de dados, como, por exemplo, especificando a seqüência de conexão do banco de dados de destino ou a propagação do gerador de números aleatórios. Essa fase ocorre uma vez antes de geração de dados.

Executar a geração de dados

Tempo de execução

Durante esta fase, os novos resultados são gerados chamando o GenerateNextValues método. Os resultados podem ser recuperados usando o GetOutputValue método. Este método recupera um valor escalar do gerador de corresponde à chave de saída que é passado para o gerador de entrada. Essa fase itera em resultados até que todos os resultados que você deseja tem sido gerados.

Limpar

Tempo de execução

Depois que todos os dados geração for concluída, Dispose é chamado para limpar o gerador.

Consulte também

Tarefas

Como: Criar geradores de dados personalizados

Demonstra Passo a passo: Criando um gerador de dados personalizados

Referência

Microsoft.Data.Schema.DataGenerator

Conceitos

Gerar dados de teste especializado com um gerador de dados personalizados