Vincoli referenziali (Entity Framework)

In Entity Data Model (EDM) possono essere presenti vincoli referenziali tra gli oggetti correlati, ad esempio tra gli oggetti SalesOrderHeader e SalesOrderDetail. Questi vincoli vengono specificati nel file CSDL (Conceptual Schema Definition Language). Per ulteriori informazioni, vedere Elemento ReferentialConstraint (EntityContainer CSDL).

NoteNota

Object Services non applica tutti i vincoli che possono essere espressi in un modello EDM. Non applica, ad esempio, i vincoli di cardinalità sulle relazioni e questo può causare la restituzione di risultati incoerenti quando le modifiche apportate agli oggetti correlati vengono salvate nell'origine dati. Assicurarsi che tutti i vincoli del modello critici vengano applicati dall'origine dati.

Quando si utilizzano oggetti con relazioni vincolate, prestare attenzione ai punti seguenti:

  • Non possono essere presenti oggetti dipendenti (figlio) senza una relazione definita con l'oggetto padre.

  • Quando si crea un nuovo oggetto figlio, l'oggetto padre deve essere presente nel contesto dell'oggetto o nell'origine dati prima che venga chiamato SaveChanges. In caso contrario, viene generato un evento InvalidOperationException.

  • Utilizzare il metodo Add per aggiungere oggetti figlio all'oggetto EntityCollection dell'oggetto padre. È possibile accedere all'insieme di oggetti figlio da una proprietà di navigazione definita per la relazione o dai metodi GetRelatedEnd o GetRelatedCollection sulla proprietà RelationshipManager dell'oggetto padre.

  • L'eliminazione dell'oggetto padre comporta anche l'eliminazione di tutti gli oggetti figlio nella relazione vincolata. Questo risultato corrisponde all'attivazione della proprietà CascadeDelete nell'associazione per la relazione.

  • La rimozione della relazione comporta l'eliminazione dell'oggetto figlio. Questo significa che chiamando Remove su EntityCollection si contrassegnano per l'eliminazione sia la relazione che l'oggetto figlio.

  • Dopo essere stata creata, una relazione può essere modificata solo tramite il processo seguente:

    1. Rimuovere la relazione esistente.

    2. Chiamare il metodo SaveChanges.

    3. Aggiungere l'oggetto figlio persistente all'oggetto EntityCollection del nuovo oggetto padre.

Vedere anche

Altre risorse

Utilizzo di oggetti (Entity Framework)