Definizione di una logica di business (Entity Framework)

Aggiungere una logica di business all'applicazione Entity Framework gestendo gli eventi generati durante determinate operazioni, ad esempio le modifiche a proprietà o a relazioni. La logica di business può includere la creazione di operazioni aggiuntive di convalida o di registrazione in caso di modifica delle proprietà o di chiamata al metodo SaveChanges. È possibile richiamare la logica di business personalizzata tramite la gestione di eventi generati da Entity Framework o la definizione di metodi parziali personalizzati chiamati quando le proprietà vengono modificate. In questo argomento sono elencati alcuni eventi e vengono forniti collegamenti ad altri argomenti correlati.

Evento e metodi parziali Descrizione

System.Data.Objects.ObjectContext.ObjectMaterialized

Generato quando una nuova entità viene creata dai dati nell'origine dati come parte di una query o di un'operazione di caricamento. L'evento si verifica dopo aver impostato tutte le proprietà scalari, complesse e di riferimento su un oggetto, ma prima che siano caricate le raccolte. Se un oggetto con lo stesso valore di chiave esiste nel contesto dell'oggetto, in Entity Framework non verrà ricreato l'oggetto e questo evento non sarà generato.

System.Data.Objects.ObjectContext.SavingChanges

Generato all'inizio di un'operazione del metodo SaveChanges su un oggetto ObjectContext. Questo evento viene generalmente utilizzato per convalidare gli oggetti modificati prima che nuovi valori vengano scritti nel database.

Per ulteriori informazioni, vedere Procedura: eseguire la logica di business al momento del salvataggio delle modifiche (Entity Framework).

System.Data.Objects.ObjectStateManager.ObjectStateManagerChanged

Si verifica quando le entità lasciano il contesto tramite i metodi di eliminazione o scollegamento o immettono il contesto tramite query o i metodi di aggiunta e collegamento. Per ulteriori informazioni, vedere Procedura: eseguire la logica di business al momento della modifica dello stato dell'oggetto (Entity Framework).

Dd456876.note(it-it,VS.100).gifNota:
Se si utilizzano entità POCO senza proxy di rilevamento delle modifiche, la modifica viene rilevata quando si chiama il metodo DetectChanges o il metodo SaveChanges che chiama il metodo DetectChanges.

System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged

Si verifica quando un'associazione viene modificata. Se si utilizzano entità generate dal codice predefinito o entità POCO con oggetti proxy, l'evento si verifica contemporaneamente alla modifica apportata alla proprietà di navigazione effettiva:

Dd456876.note(it-it,VS.100).gifNota:
Se si utilizzano entità POCO senza proxy, la modifica viene rilevata quando si chiama il metodo DetectChanges o il metodo SaveChanges che chiama il metodo DetectChanges.

Gli eventi possono essere eliminati durante le operazioni bulk, ad esempio Load, Attach e Clear.

Per ulteriori informazioni, vedere Procedura: eseguire la logica di business quando vengono modificate le associazioni.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanging

Si verifica quando la modifica del valore di una proprietà scalare è in sospeso. Le classi generate da Entity Framework chiamano il metodo ReportPropertyChanging nei metodi Set di proprietà scalare. Il metodo ReportPropertyChanging genera l'evento PropertyChanging. Gestire questo evento per eseguire la logica di business, ad esempio la convalida, prima della modifica del valore di una proprietà. Per ulteriori informazioni, vedere Procedura: eseguire la logica di business quando vengono modificate le proprietà scalari (Entity Framework).

Quando vengono rilevate le modifiche apportate alle classi di dati personalizzate che implementano l'oggetto IEntityWithChangeTracker, è necessario utilizzare l'oggetto IEntityChangeTracker per segnalare le modifiche alle proprietà.

Dd456876.note(it-it,VS.100).gifNota:
Per ricevere una notifica quando la proprietà di navigazione viene modificata, effettuare la registrazione per l'evento System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Per ulteriori informazioni, vedere Procedura: eseguire la logica di business quando vengono modificate le associazioni.

System.Data.Objects.DataClasses.StructuralObject.PropertyChanged

Si verifica quando il valore della proprietà scalare è stato modificato. Le classi generate da Entity Framework chiamano il metodo ReportPropertyChanged nei metodi Set di proprietà scalare. Il metodo ReportPropertyChanged genera l'evento PropertyChanged. Gestire questo evento per eseguire la logica di business, ad esempio la scrittura in un log, quando una proprietà viene modificata. Per ulteriori informazioni, vedere Procedura: eseguire la logica di business quando vengono modificate le proprietà scalari (Entity Framework).

Quando vengono rilevate le modifiche apportate alle classi di dati personalizzate che implementano l'oggetto IEntityWithChangeTracker, è necessario utilizzare l'oggetto IEntityChangeTracker per segnalare le modifiche alle proprietà.

Dd456876.note(it-it,VS.100).gifNota:
Per ricevere una notifica quando la proprietà di navigazione viene modificata, effettuare la registrazione per l'evento System.Data.Objects.DataClasses.RelatedEnd.AssociationChanged.Per ulteriori informazioni, vedere Procedura: eseguire la logica di business quando vengono modificate le associazioni.

Metodo OnContextCreated

Tramite gli strumenti di Entity Data Model viene generato un metodo parziale OnContextCreated nella classe che rappresenta l'oggetto EntityContainer per il modello che eredita dalla classe ObjectContext. Questo metodo parziale viene chiamato ogni volta che viene creata un'istanza di ObjectContext. Implementare questo metodo parziale nel codice per registrare un gestore per l'evento SavingChanges. Per ulteriori informazioni, vedere Procedura: eseguire la logica di business al momento del salvataggio delle modifiche (Entity Framework).

On PropertyName Changing e OnPropertyNameChanged

Tramite gli strumenti di Entity Data Model vengono generati metodi parziali nelle funzioni di accesso set di proprietà scalare per ogni tipo di entità. Il metodo parziale OnPropertyNameChanging viene chiamato prima dell'impostazione del valore. Il metodo parziale OnPropertyNameChanged viene chiamato dopo l'impostazione del valore. Implementare questi metodi parziali per aggiungere la logica di business.

Vedere anche

Concetti

Personalizzazione di oggetti (Entity Framework)

Altre risorse

Entity Data Model Tools