Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
A DataSet classe 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 especialmente úteis para aplicativos que permitem aos usuários modificar dados e manter as alterações de volta ao banco de dados. Embora os conjuntos de dados sejam uma tecnologia comprovadamente bem-sucedida, a abordagem recomendada para novos aplicativos .NET é usar o Entity Framework Core. O Entity Framework fornece uma maneira mais natural de trabalhar com dados tabulares como modelos de objeto e tem uma interface de programação mais simples.
Os conjuntos de dados que contêm tabelas de dados relacionadas usam DataRelation objetos para representar uma relação pai/filho entre as tabelas e para retornar registros relacionados uns dos outros. Adicionar tabelas relacionadas a conjuntos de dados usando o Assistente de Configuração da Fonte de Dados ou o Designer de Conjunto de Dados cria e configura o DataRelation objeto para você.
O DataRelation objeto executa duas funções:
Ele pode disponibilizar os registros relacionados a um registro com o qual você está trabalhando. Fornece registros filhos se você estiver em um registro pai (GetChildRows) e um registro pai se estiver trabalhando com um registro filho (GetParentRow).
Ele pode impor restrições para integridade referencial, como excluir registos filho relacionados quando se exclui um registo pai.
É importante entender a diferença entre uma junção verdadeira e a função de um DataRelation objeto. Numa junção verdadeira, os registos são retirados das tabelas mãe e filha e colocados num único conjunto de registos plano. Quando você usa um DataRelation objeto, nenhum novo conjunto de registros é criado. Em vez disso, o DataRelation controla a relação entre tabelas e mantém os registros pai e filho sincronizados.
Objetos e restrições DataRelation
Um DataRelation objeto 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 estrangeira, que pode ser usada para manter a integridade referencial entre uma tabela pai e filho em um conjunto de dados.
As restrições especificadas em um DataRelation objeto são implementadas criando automaticamente objetos apropriados ou definindo propriedades. Se você criar uma restrição de chave estrangeira usando o DataRelation objeto, as ForeignKeyConstraint instâncias da classe serão adicionadas à DataRelation propriedade do ChildKeyConstraint objeto.
Uma restrição exclusiva é implementada definindo simplesmente a propriedade Unique de uma coluna de dados para true ou adicionando uma instância da classe UniqueConstraint à propriedade ParentKeyConstraint do objeto DataRelation. Para obter informações sobre como suspender restrições em um conjunto de dados, consulte Desativar restrições ao preencher um conjunto de dados.
Regras de integridade referencial
Como parte da restrição de chave estrangeira, 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 é aceite ou rejeitada
As regras que o utilizador pode definir são especificadas na enumeração Rule e estão listadas na tabela a seguir.
| Regra de restrição de chave estrangeira | Ação |
|---|---|
| Cascade | A alteração (atualização ou exclusão) feita no registro pai também é feita em registros relacionados na tabela filho. |
| SetNull | Os registos filhos não são eliminados, mas a chave estrangeira nos registos filhos é definida como DBNull. Com essa configuração, os registros filhos podem ser deixados como "órfãos", ou seja, não têm relação com os registros dos pais. Observação: O uso desta regra pode resultar em dados inválidos na tabela filha. |
| SetDefault | A chave estrangeira nos registos filho relacionados é definida para o seu valor padrão (conforme estabelecido pela propriedade da coluna DefaultValue). |
| None | Nenhuma alteração é feita nos registos filho relacionados. Com esta configuração, os registos filho podem conter referências a registos pai inválidos. |
Para obter mais informações sobre atualizações em tabelas de conjunto de dados, consulte Salvar dados de volta ao banco de dados.
Relações apenas com restrições
Ao criar um DataRelation objeto, você tem a opção de especificar que a relação seja usada apenas para impor restrições, ou seja, ela também não será usada para acessar registros relacionados. Você pode usar essa opção para gerar um conjunto de dados que seja um pouco mais eficiente e que contenha menos métodos do que um com o recurso de registros relacionados. No entanto, não poderá aceder aos registos relacionados. Por exemplo, uma relação somente de restrição impede que você exclua um registro pai que ainda tenha registros filho e você não pode acessar os registros filho por meio do pai.
Criando manualmente uma relação de dados no Dataset Designer
Quando você cria tabelas de dados usando as ferramentas de design de dados no Visual Studio, as relações são criadas automaticamente se as informações puderem ser coletadas da fonte de seus dados. Se você adicionar manualmente tabelas de dados da guia DataSet da Caixa de Ferramentas, talvez seja necessário criar a relação manualmente. Para obter informações sobre como criar DataRelation objetos programaticamente, consulte Adicionando DataRelations.
As relações entre tabelas de dados aparecem como linhas no Dataset Designer, com um glifo de chave e infinito representando o aspeto um-para-muitos da relação. Por padrão, o nome da relação não aparece na superfície de design.
Observação
As instruções neste artigo ilustram a versão mais recente da experiência de desenvolvimento interativo (IDE) disponível no Visual Studio. Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário. Você pode estar usando uma versão diferente do Visual Studio ou configurações de ambiente diferentes. Para obter mais informações, consulte Personalizar o IDE.
Para criar uma relação entre duas tabelas de dados
Abra seu conjunto de dados no Dataset Designer. Para obter mais informações, consulte Passo a passo: Criando um conjunto de dados no Dataset Designer.
Arraste um objeto Relation da caixa de ferramentas DataSet para a tabela de filhos na relação.
A caixa de diálogo Relation é aberta, preenchendo a caixa Tabela Filha com a tabela para a qual arrastou o objeto Relation.
Selecione a tabela pai na caixa Tabela pai . A tabela pai contém registros no lado "um" de uma relação um-para-muitos.
Verifique se a tabela secundária correta é exibida no campo Tabela Secundária. A tabela filho contém registros no lado "muitos" de uma relação um-para-muitos.
Digite um nome para a relação na caixa Nome ou deixe o nome padrão com base nas tabelas selecionadas. Este é o nome do objeto real DataRelation no código.
Selecione as colunas que unem as tabelas nas listas Colunas de Chave e Colunas de Chave Estrangeira .
Selecione se deseja criar uma relação, restrição ou ambas.
Selecione ou desmarque a caixa Relação aninhada . Selecionar esta opção define a propriedade Nested como
true, e faz com que as linhas subordinadas da relação sejam aninhadas na coluna principal quando essas linhas são registadas como dados XML ou sincronizadas com XmlDataDocument. Para obter mais informações, consulte Aninhando DataRelations.Defina as regras a serem aplicadas quando você estiver fazendo alterações nos registros nessas tabelas. Para obter mais informações, consulte Rule.
Clique em OK para criar a relação. Uma linha de relação aparece no designer entre as duas tabelas.
Para exibir um nome de relação no Dataset Designer
Abra seu conjunto de dados no Dataset Designer. Para obter mais informações, consulte Passo a passo: Criando um conjunto de dados no Dataset Designer.
No menu Dados , selecione o comando Mostrar rótulos de relação para exibir o nome da relação. Limpe esse comando para ocultar o nome da relação.