Adicionar validação a classes de entidade
Observação
Os conjuntos de dados e as classes relacionadas são tecnologias herdadas do .NET Framework do início dos anos 2000 que permitem que os aplicativos trabalhem com dados na memória enquanto os aplicativos estão desconectados do banco de dados. As tecnologias são bastante úteis em aplicativos que permitem que os usuários modifiquem dados e persistam as alterações no banco de dados. Embora os conjuntos de dados tenham se mostrado uma tecnologia muito bem-sucedida, é recomendado que os novos aplicativos .NET usem o Entity Framework Core. O Entity Framework proporciona uma forma mais natural de trabalhar com dados tabulares como modelos de objeto e conta com uma interface de programação mais simples.
Validar classes de entidade é o processo que confirma que os valores inseridos em objetos de dados estão de acordo com as restrições do esquema de um objeto e também as regras estabelecidas para o aplicativo. Validar dados antes de enviar atualizações para o base de dados subjacente é uma boa prática que reduz erros. Também reduz o número potencial de processamentos entre um aplicativo e o base de dados.
As ferramentas LINQ to SQL no Visual Studio fornecem os métodos parciais que permitem aos usuários estender o código gerado pelo designer que é executado durante inserções, atualizações e exclusões de entidades completas, e durante e após as alterações da coluna individual.
Observação
Este tópico fornece as etapas básicas para adicionar validação a classes de entidade usando o O/R Designer. Como pode ser difícil seguir essas etapas genéricas sem se referir a uma classe específica de entidade, um explicação passo a passo que usa os dados reais é fornecida.
Adicionar validação para alterações ao valor em uma coluna específica
Este procedimento mostra como validar dados quando o valor em uma coluna é alterado. Uma vez que a validação é executada na definição de classe (em vez de na interface do usuário), será lançada uma exceção se o valor causar a falha da validação. Implementar manipulação de erro para o código em seu aplicativo que tenta alterar os valores de coluna.
Observação
Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio neste artigo. Você pode estar usando outra edição do Visual Studio ou outras configurações de ambiente. Para obter mais informações, confira Personalizar o IDE.
Para validar dados durante o valor de uma coluna alterar
Abra ou crie um novo arquivo de classes de LINQ to SQL (arquivo
.dbml
) no Designer Relacional de Objetos. (Clique duas vezes no arquivo.dbml
no Gerenciador de Soluções.)No Designer Relacional de Objetos, clique com o botão direito do mouse na classe para qual você deseja adicionar validação e selecione Exibir Código.
O editor de códigos abre com uma classe parcial para a classe de entidade selecionada.
Coloque o cursor na classe parcial.
Para projetos do Visual Basic:
Expanda a lista Nome do Método.
Localize o método OnCOLUMNNAMEChanging para a coluna à qual você deseja adicionar validação.
Um método
OnCOLUMNNAMEChanging
é adicionado à classe parcial.Adicione o seguinte código para primeiro verificar que um valor está inserido e para garantir em que o valor inserido para a coluna é aceitável para seu aplicativo. O argumento de
value
contém o valor proposto, para adicionar a lógica para confirmar que é um valor válido:If value.HasValue Then ' Add code to ensure that the value is acceptable. ' If value < 1 Then ' Throw New Exception("Invalid data!") ' End If End If
Para projetos C#:
Como os projetos C# não geram automaticamente os manipuladores de eventos, você pode usar o IntelliSense para criar métodos parciais de alteração de colunas. Tipo
partial
e um espaço para acessar a lista de métodos parciais disponíveis. Clique no método de alteração para a coluna que você deseja adicionar validação para. O seguinte código lembra o código que é gerado quando você seleciona um método parcial de alteração de colunas:partial void OnCOLUMNNAMEChanging(COLUMNDATATYPE value) { throw new System.NotImplementedException(); }
Adicionar validação para atualizações a uma classe de entidade
Além de verificar valores alterações pendentes, você também pode validar dados quando é feita uma tentativa de atualizar uma classe completa de entidade. A validação durante uma atualização tentada permite que você comparar valores em várias colunas se as regras comerciais exigem esta. O procedimento a seguir mostra como validar quando é feita uma tentativa de atualizar uma classe completa de entidade.
Observação
O código de validação para que as atualizações terminem classes de entidade é executado na classe parcial de DataContext (em vez de na classe parcial de uma classe específica de entidade).
Para validar dados durante uma atualização para uma entidade
Abra ou crie um novo arquivo de classes de LINQ to SQL (arquivo
.dbml
) no Designer Relacional de Objetos. (Clique duas vezes no arquivo.dbml
no Gerenciador de Soluções.)Clique com o botão direito do mouse em uma área vazia no Designer Relacional de Objetos e clique em Exibir Código.
O editor de códigos abre com uma classe parcial para
DataContext
.Coloque o cursor na classe parcial para
DataContext
.Para projetos do Visual Basic:
Expanda a lista Nome do Método.
Clique em UpdateENTITYCLASSNAME.
Um método
UpdateENTITYCLASSNAME
é adicionado à classe parcial.Acessar valores de colunas individuais usando o argumento de
instance
, conforme mostrado no código o seguir:If (instance.COLUMNNAME = x) And (instance.COLUMNNAME = y) Then Dim ErrorMessage As String = "Invalid data!" Throw New Exception(ErrorMessage) End If
Para projetos C#:
Como os projetos C# não geram automaticamente os manipuladores de eventos, você pode usar o IntelliSense para criar o método
UpdateCLASSNAME
parcial. Tipopartial
e um espaço para acessar a lista de métodos parciais disponíveis. Clique no método de atualização para a classe no qual você deseja adicionar validação. O seguinte código lembra o código gerado quando você seleciona um método parcialUpdateCLASSNAME
:partial void UpdateCLASSNAME(CLASSNAME instance) { if ((instance.COLUMNNAME == x) && (instance.COLUMNNAME = y)) { string ErrorMessage = "Invalid data!"; throw new System.Exception(ErrorMessage); } }