restrição de integridade referencial

Uma restrição de integridade referencial no EDM (Modelo de Dados de Entidade) é 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 referenciar a chave primária de outra tabela, uma propriedade (ou propriedades) de um tipo de entidade pode referenciar a 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:

  • O final principal de restrição. (Um tipo de entidade cuja chave de entidade é referenciada pela o final dependente.)

  • A chave de entidade de extremidade principal.

  • O final dependente de restrição. (Um tipo de entidade que tem uma propriedade ou um propriedades que referenciem a chave de entidade de extremidade principal.)

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

O objetivo de restrições de integridade referencial em EDM é garantir que as associações válidos sempre existe. Para obter mais informações, consulte propriedade de chave estrangeira.

Exemplo

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

RefConstraintModel

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

<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>

Confira também