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