Condividi tramite


Entità condivise

Le entità possono essere condivise tra diversi servizi del dominio all'interno di un'applicazione WCF RIA Services. L'accesso allo stesso tipo di entità può essere eseguito da un client tramite ciascuno di questi servizi del dominio purché siano contenuti all'interno della stessa DLL del server. Il supporto per le entità condivise include la generazione di codice basata su associazioni potenzialmente diverse e metodi di aggiornamento denominati in ognuno dei tipi DomainService. La possibilità di condividere le entità facilita maggiormente il refactoring e la composizione di applicazioni RIA Services più grandi tramite un mapping più semplice delle entità al modello di dati sottostante.

Gli scenari che illustrano la necessità di tale condivisione sono comuni. Considerare ad esempio come poter condividere le informazioni personali sui dipendenti e i dati dei dipendenti delle risorse umane. Un'entità Dipendente può essere esposta tramite un oggetto DomainService relativo alle informazioni personali dei dipendenti, dove i dipendenti possono aggiornare le informazioni personali come l'indirizzo e il numero telefonico. Lo stesso tipo Dipendente può essere esposto anche tramite un oggetto DomainService relativo alle risorse umane, dove tra le informazioni delle risorse umane, come le date delle ferie e il pagamento degli stupendi, vengono visualizzati anche i dettagli dell'entità Dipendente come il nome e l'ID. Un altro esempio è dato da un'entità prodotto utilizzata sia da un servizio di acquisti che da un servizio di catalogo.

Si noti che la condivisione delle entità è supportata solo all'interno di una singola DLL del server. Un qualsiasi numero di servizi del dominio può fare riferimento allo stesso tipo di entità all'interno dei limiti di una DLL. Ma la condivisone dello stesso tipo di entità attraverso diverse DLL del server non è supportata. Per istruzioni sulla condivisione di un'entità tra i domini del servizio, vedere l'argomento Procedura dettagliata: condivisione di entità tra più servizi del dominio.

[!NOTA] Il supporto delle entità condivise è stato introdotto in WCF RIA Services V1.0 SP1 e non è supportato in WCF RIA Services V1.0.

Definizione dell'entità client

Con l'introduzione della condivisione dei tipi di entità tra più servizi del dominio, ogni oggetto DomainService che utilizza un tipo di entità specificato contribuisce o meno alla generazione della proprietà dell'entità server sul client. L'entità client generata sarà una visualizzazione unita contenente le proprietà dell'entità utilizzate dai servizi che espongono il tipo. Il risultato è che il generatore di codice creerà un tipo di entità nel client a cui può accedere ciascuno dei servizi del dominio all'interno della DLL dell'applicazione. La definizione dell'entità client può essere interessata anche dall'utilizzo degli attributi IncludeAttribute e ExcludeAttribute. La proprietà dell'entità server che si basa sull'oggetto IncludeAttribute si rifletterà sempre sul client. La proprietà dell'entità server che si basa sull'oggetto ExcludeAttribute non si rifletterà mai sul client.

Metodi di aggiornamento personalizzati con entità condivise

I metodi di aggiornamento personalizzati in un servizio del dominio a cui è applicato l'attributo [Update(UsingCustomMethod = true)] si rifletteranno nel contesto del dominio del client e l'entità del cliente conterrà i metodi di aggiornamento personalizzati a essa associati. Il contesto del dominio ha un'affinità naturale al servizio del dominio, ma poiché l'entità può non essere condivisa, gli utenti devono prestare attenzione al contesto del dominio da utilizzare quando si chiama un metodo di aggiornamento personalizzato. A tale scopo utilizzare Intellisense per assistenza.

Limitazioni della condivisione

Tenere presenti tre limitazioni relative alle entità condivise.

  1. La condivisone dello stesso tipo di entità tra le DLL del server non è ancora supportata, come descritto in precedenza.

  2. Se in una gerarchia di ereditarietà vengono condivisi i rami di una gerarchia, deve essere condiviso lo stesso livello della gerarchia.

  3. Tutti gli oggetti DomainService che condividono un particolare tipo di entità devono rispettare la stessa descrizione dei metadati di tale tipo. Ciò significa che qualsiasi oggetto DomainServiceDescriptionProvider personalizzato per il servizio deve specificare gli stessi metadati per il tipo.