Partilhar via


Restrição de integridade referencial

Uma restrição de integridade referencial no Modelo de Dados de Entidade (EDM) é semelhante a uma restrição de integridade referencial em um banco de dados relacional. Da mesma forma que uma coluna (ou colunas) de uma tabela de banco de dados pode fazer referência à chave primária de outra tabela, uma propriedade (ou propriedades) de um tipo de entidade pode fazer referência à chave de entidade de outro tipo de entidade. O tipo de entidade referenciado é chamado de extremidade principal da restrição. O tipo de entidade que faz referência à extremidade principal é chamado de extremidade dependente da restrição.

Uma restrição de integridade referencial é definida como parte de uma associação entre dois tipos de entidade. A definição de uma restrição de integridade referencial especifica as seguintes informações:

  • A extremidade principal da restrição. (Um tipo de entidade cuja chave de entidade é referenciada pela extremidade dependente.)

  • A chave de entidade da extremidade principal.

  • O fim dependente da restrição. (Um tipo de entidade que tem uma propriedade ou propriedades que fazem referência à chave de entidade da extremidade principal.)

  • A propriedade ou propriedades de referência da extremidade dependente.

O objetivo das restrições de integridade referencial na EDM é assegurar que existem sempre associações válidas. Para obter mais informações, consulte Propriedade de chave estrangeira.

Exemplo

O diagrama abaixo mostra um modelo conceitual com duas associações: WrittenBy e PublishedBy. O Book tipo de entidade tem uma propriedade, PublisherId, que faz referência à chave de entidade do Publisher tipo de entidade quando você define uma restrição de integridade referencial na PublishedBy associação.

RefConstraintModel

O ADO.NET Entity Framework usa uma linguagem específica de domínio (DSL) chamada linguagem de definição de esquema conceitual (CSDL) para definir modelos conceituais. A CSDL a seguir define uma restrição de integridade referencial na PublishedBy associação mostrada no modelo conceitual acima.

<Association Name="PublishedBy">
  <End Type="BooksModel.Book" Role="Book" Multiplicity="*" >
  </End>
  <End Type="BooksModel.Publisher" Role="Publisher" Multiplicity="1" />
  <ReferentialConstraint>
    <Principal Role="Publisher">
      <PropertyRef Name="Id" />
    </Principal>
    <Dependent Role="Book">
      <PropertyRef Name="PublisherId" />
    </Dependent>
  </ReferentialConstraint>
</Association>

Consulte também