Condividi tramite


Personalizzazione di oggetti (Entity Framework)

In ADO.NET Entity Framework sono disponibili strumenti che consentono di generare automaticamente un livello oggetti in base al file CSDL (Conceptual Schema Definition Language) di Entity Data Model (EDM). Queste classi di dati possono essere personalizzate a diversi livelli, a seconda dei requisiti dell'applicazione. È inoltre possibile modificare le classi di dati personalizzate per utilizzarle con EDM. Questa operazione è utile quando si aggiornano le classi di dati da un'applicazione esistente per utilizzare Entity Framework o quando si desidera un maggiore controllo sulla modalità di creazione delle classi di dati.

Estensione di classi di dati parziali

Ai tipi definiti in EDM non sono associati metodi come alle classi utilizzate nella programmazione orientata a oggetti. Essi contengono invece solo proprietà definite in EDM. È possibile aggiungere funzionalità agli oggetti estendendo le classi di dati parziali generate. Quando le classi di dati vengono generate dagli strumenti di Entity Data Model, vengono implementate in classi parziali. Una classe parziale suddivide la definizione di una classe tra due o più file di origine. Ogni file di origine contiene una sezione della definizione di classe e tutte le sezioni vengono combinate in fase di compilazione dell'applicazione. Per ulteriori informazioni, vedere Partial (Visual Basic) o parziale (Tipo) (Riferimenti per C#).

La presenza di classi parziali consente di estendere tali classi con proprietà e metodi personalizzati in un file di origine separato senza doversi preoccupare di perdere la personalizzazione quando i file generati vengono aggiornati. Per ulteriori informazioni, vedere Procedura: personalizzare oggetti dati generati (Entity Framework).

Logica di business personalizzata

Quando si utilizzano classi di dati generate, è possibile richiamare la logica di business personalizzata durante determinate operazioni di Object Services, ad esempio modifiche alle proprietà o alle 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 a SaveChanges. È possibile richiamare la logica di business personalizzata tramite la gestione di eventi generati da Object Services o la definizione di metodi parziali personalizzati chiamati quando le proprietà vengono modificate.

Di seguito sono illustrati gli eventi e i metodi utilizzati per richiamare la logica di business personalizzata:

Classi di dati personalizzate

In alcuni casi la sola estensione delle classi parziali aggiungendo metodi e proprietà potrebbe non offrire sufficiente flessibilità. Si consideri un'applicazione .NET Framework esistente che utilizza ADO.NET per caricare i dati da un database in oggetti CLR affinché possano essere utilizzati dall'applicazione. Questi oggetti potrebbero contenere logica di business e personalizzazioni importanti che devono essere mantenute nel livello oggetti. Queste personalizzazioni potrebbero impedire la migrazione dell'applicazione per l'utilizzo di Entity Framework. Si potrebbe inoltre desiderare di disporre di un maggiore controllo sui tipi di entità e non semplicemente di estendere le classi parziali generate.

La modalità consigliata per utilizzare le classi di dati personalizzate con EDM consiste nell'ereditare da EntityObject. Se non è possibile ereditare da EntityObject oppure se si necessita di una maggiore indipendenza dal framework, Entity Framework fornisce un set di interfacce che è possibile implementare per utilizzare le classi di dati personalizzate con EDM. Per ulteriori informazioni, vedere Implementazione di interfacce di classi di dati personalizzate (Entity Framework). Quando si utilizzano classi di dati personalizzate, è necessario applicare gli attributi alle proprietà e alle classi di dati personalizzate e notificare il contesto dell'oggetto in caso di modifica delle proprietà.

Ereditarietà da EntityObject

Le classi di dati generate ereditano da EntityObject o da ComplexObject. Se è necessario utilizzare classi di dati personalizzate con EDM, è consigliabile modificare le classi di dati in modo che ereditino da una di queste due classi di base. In questo modo, nelle classi di dati personalizzate possono essere utilizzate le funzionalità di rilevamento delle modifiche e di gestione delle relazioni fornite da EntityObject.

Quando si eredita da EntityObject e da ComplexObject, prestare attenzione ai punti seguenti:

Nell'esempio seguente viene definita la classe di dati personalizzata Order che eredita da EntityObject:

<EdmEntityTypeAttribute(NamespaceName:="Microsoft.Samples.Edm", Name:="Order")> _
Public Class Order
    Inherits EntityObject
[EdmEntityTypeAttribute(NamespaceName="Microsoft.Samples.Edm",Name="Order")]
public class Order : EntityObject 

Per ulteriori informazioni, vedere Procedura: ereditare dalle classi di base EntityObject e ComplexObject (Entity Framework).

Contenuto della sezione

Vedere anche

Altre risorse

Object Services (Entity Framework)
Utilizzo di oggetti personalizzati (attività di Entity Framework)