Introdução aos objetos DataRelation
DataSets que contêm tabelas de dados relacionadas usam objetos DataRelation para representar uma relação pai/filho entre as tabelas e para retornar registros relacionados de um para o outro.Adicionar tabelas relacionadas a DataSets usando o Data Source Configuration Wizard, ou o Dataset Designer, cria e configura o objeto DataRelation para você.Para obter mais informações sobre retornar registros relacionados, consulte Como: Acesso Records in Related DataTables.Para obter informações sobre como criar relações de dados, consulte Como: Criar DataRelations com o Designer de Conjunto de Dados de Conjunto de Dados.
O objeto DataRelation executa duas funções:
Ele pode tornar disponíveis os registros relacionados para um registro no qual você estiver trabalhando.Ele fornece registros filho se você estiver em um registro pai (GetChildRows) e um registro pai se você estiver trabalhando com um registro filho (GetParentRow).
Isto pode impor restrições para integridade referencial, como excluir registros relacionados a filho quando você exclui um registro pai.
É importante compreender a diferença entre uma associação verdadeira e a função de um objeto DataRelation.Em uma associação verdadeira, os registros são tirados das tabelas pai e filho e colocados em um único e simples conjunto de registros.Quando você usa um objeto DataRelation, nenhum novo conjunto de registros é criado.Em vez disso, a relação rastreia o relacionamento entre tabelas e mantém registros pai e filho em sincronia.
Objetos DataRelation e restrições
Um objeto DataRelation também é usado para criar e impor as seguintes restrições:
Uma restrição exclusiva, que garante que uma coluna na tabela não contenha duplicatas.
Uma restrição de chave externa, que pode ser usada para manter a integridade referencial entre uma tabela pai e filho em um DataSet.
Restrições que você especificar em um objeto DataRelation são implementadas criando automaticamente objetos apropriados ou definindo propriedades.Se você criar uma restrição de chave externa usando o objeto DataRelation, instâncias da classe ForeignKeyConstraint são adicionadas à propriedade ChildKeyConstraint do DataRelation.
Uma restrição exclusiva é implementada simplesmente definindo a propriedade Unique de um coluna de dados como true ou adicionando uma instância da classe UniqueConstraint ao DataRelationParentKeyConstraint do objeto.Para obter informações sobre suspender restrições em um DataSet, consulte Como: Desativar Off Constraints While Filling a DataSet.
Regras de integridade referencial
Como parte de restrição de chave externa, você pode especificar regras de integridade referencial que são aplicadas em três pontos:
Quando um registro pai é atualizado
Quando um registro pai é excluído
Quando uma alteração for aceita ou rejeitada
As regras que você pode fazer estão especificadas na enumeração Rule e estão listadas na tabela a seguir.
Regra de Restrição da Chave externa |
Ação |
---|---|
A alteração (atualização ou exclusão) feita para o registro pai é feita no registros relacionados na tabela filho também. |
|
Registros filho não são excluídos, mas a chave externa nos registros filho é definida como DBNull.Com essa configuração, registros filho podem ser deixados como "órfãos" — ou seja, eles não têm relação com registros pai.
Observação:
Usar esta regra pode resultar em dados inválidos na tabela filho.
|
|
A chave externa nos registros filho relacionados é definida como seu valor padrão (conforme estabelecido pela propriedade DefaultValue da coluna). |
|
Nenhuma alteração é feita a registros filho relacionados.Com essa configuração, registros filho podem acabar contendo referências a registros pai inválidos. |
Para obter mais informações sobre atualizações em tabelas de dataset, consulte Visão Geral Sobre Salvamento de Dados.
Relações somente-Restrição
Ao criar um objeto DataRelation, você tem a opção de especificar que a relação seja usada somente para impor restrições — isto é, ela não será usada também para acessar registros relacionados.Esta opção permite a você para gerar um DataSet que é um pouco mais eficiente e que contém menos métodos que aquela com a funcionalidade related-Records.Entretanto, não será capaz de acessar registros relacionados.Por exemplo, uma relação somente-restrição impede você de excluir um registro pai que ainda possui filhos, e você não pode acessar os registros filho através do pai.
Consulte também
Conceitos
Datasets in Visual Studio Overview
Referência
Assistente de Configuração de Fonte de Dados