Utilizzo degli oggetti correlati ai dati nel codice
LightSwitch genera oggetti e membri che descrivono i dati.I nomi di questi oggetti e membri corrispondono ai nomi degli elementi nella soluzione.Ad esempio, se si aggiunge una tabella denominata Customer, LightSwitch genera un oggetto denominato Customer.In questo argomento viene descritto ogni tipo di oggetto generato da LightSwitch.Per visualizzare esempi di codice che utilizzano questi oggetti e membri per eseguire attività comuni correlate ai dati, vedere Esecuzione delle attività relative ai dati tramite codice.
Gerarchia degli oggetti e dei membri generati
Nell'illustrazione seguente vengono riepilogati gli oggetti e i membri generati del modello di dati.
Applicazione
L'oggetto Application fornisce l'accesso di primo livello agli oggetti nell'applicazione.Per accedere all'oggetto Application, aprire qualsiasi file del codice utente nell'editor di codice, quindi digitare Application.I tipi di metodi e proprietà visualizzati in IntelliSense dopo aver digitato Application e "." verranno modificati in base al file di codice nel quale si scrive codice.Nella maggior parte dei casi, è possibile utilizzare una proprietà dell'oggetto Application per ottenere un oggetto che rappresenta l'utente corrente.
Area di lavoro dati
L'oggetto DataWorkspace è l'oggetto di primo livello per l'accesso a tutti i dati.L'oggetto DataWorkspace contiene una proprietà per ogni origine dati nel progetto.Ad esempio, se si dispone di un'origine dati denominata NorthwindData, LightSwitch genera una proprietà denominata NorthwinddData.Quando si digita DataWorkspace nell'Editor di codice, la proprietà NorthwindData diventa disponibile in un elenco a discesa.
Nell'illustrazione seguente vengono mostrati alcuni membri generati che potrebbero venire visualizzati in un elenco a discesa.
Origine dati
LightSwitch genera un oggetto per ogni origine dati del progetto.Questo oggetto contiene i membri che è possibile utilizzare per accedere ai dati.I membri di un oggetto origine dati includono le proprietà del set di entità e i metodi di query.
Nell'illustrazione seguente vengono mostrati alcuni membri generati che potrebbero venire visualizzati in un elenco a discesa.
Proprietà del set di entità
Una proprietà del set di entità restituisce una raccolta di entità.LightSwitch genera una proprietà del set di entità per ogni entità nell'origine dati.Ad esempio, se l'origine dati contiene un'entità denominata Customer, LightSwitch genera una proprietà denominata Customers.È possibile utilizzare la proprietà Customers per ottenere un oggetto EntitySet che rappresenta una raccolta di entità Customer.
L'oggetto EntitySet contiene anche i membri che consentono di controllare se l'utente corrente dispone delle autorizzazioni per leggere, aggiornare o eliminare le entità nella raccolta.Per ulteriori informazioni, vedere Esecuzione delle attività relative ai dati tramite codice.
[!NOTA]
EntitySet è uno di diversi tipi di oggetti della raccolta di entità.Per ottimizzare le prestazioni del codice, verificare che venga utilizzato il tipo corretto di oggetto della raccolta di entità per il tipo di logica di business che si scrive.Per ulteriori informazioni, vedere Oggetti e prestazioni della raccolta di entità.
Metodi di query
Un metodo di query consente di ottenere i risultati di una query.LightSwitch genera un metodo per ogni query definita nell'origine dati.Il nome del metodo corrisponde al nome della query.Una query può restituire una singola entità o una raccolta di entità di tipo IDataServiceQueryable.
[!NOTA]
IDataServiceQueryable<T> è uno di diversi tipi di oggetti della raccolta di entità.Per ottimizzare le prestazioni del codice, verificare che venga utilizzato il tipo corretto di oggetto della raccolta di entità per il tipo di logica di business che si scrive.Per ulteriori informazioni, vedere Oggetti e prestazioni della raccolta di entità.
Per impostazione predefinita, LightSwitch genera i seguenti metodi di query per ogni entità nell'origine dati.
<Entity Name>_Single.
<Entity Name>_SingleOrDefault.
Entrambi i metodi accettano un segmento della chiave primaria e restituiscono un singolo oggetto entità.Se non viene restituita alcuna entità, il metodo <Entity Name>_Single genera un'eccezione mentre il metodo <Entity Name>_SingleOrDefault restituisce un valore Null (Nothing in Visual Basic).
Entità
LightSwitch genera un EntityObject per ogni entità in una raccolta di entità.Ad esempio, se il codice ha recuperato una raccolta di ordini, la raccolta conterrà un EntityObject che rappresenta ogni ordine.Un EntityObject contiene i membri che è possibile utilizzare per eliminare un'entità, leggere o aggiornare il valore delle proprietà dell'entità o ottenere le entità correlate.È possibile ottenere un EntityObject da un oggetto della raccolta di entità, ad esempio un EntitySet o chiamando un metodo di query che restituisce un'entità.Per ulteriori informazioni, vedere Esecuzione delle attività relative ai dati tramite codice.
Nell'immagine riportata di seguito vengono illustrati i membri di un'entità Order denominata myOrder.L'entità Order contiene proprietà dell'entità quali OrderDate, OrderIDe Freight.L'entità Order dispone anche di membri che è possibile utilizzare per ottenere la raccolta Order_Details correlata e il Customer che ha inserito l'ordine.
In questo esempio viene restituita un'entità Customer dalla proprietà Customer.Un'entità Customer si trova sul lato uno della relazione Customer-Order.
La proprietà Order_Details restituisce una raccolta di entità Order_Details.L'entità Order_Details si trova sul lato molti della relazione Order-Order_Details.L'oggetto Collection Order_Details è di tipo EntityCollection.
In questa illustrazione viene anche mostrata una proprietà denominata Order_DetailsQuery.Le proprietà che terminano con la parola Query restituiscono un oggetto IDataServiceQueryable.
[!NOTA]
EntityCollection e IDataServiceQueryable sono entrambi tipi di oggetti della raccolta di entità.Per ottimizzare le prestazioni del codice, verificare che venga utilizzato il tipo corretto di oggetto della raccolta di entità per il tipo di logica di business che si scrive.Per ulteriori informazioni, vedere Oggetti e prestazioni della raccolta di entità.
Oggetti e prestazioni della raccolta di entità
Quando si utilizza un oggetto della raccolta di entità in un'espressione LINQ, LightSwitch esegue un'operazione che consente di recuperare le entità dal livello server.Il tipo di oggetto che si utilizza determina se LightSwitch recupera tutte le entità in una raccolta o solo un subset di esse.Per assicurarsi che il codice venga eseguito come previsto, scegliere il tipo di oggetto collection più appropriato per la logica business che si sta scrivendo.Esistono due tipi di oggetti della raccolta entità: quelli che fanno in modo che LightSwitch valuti un'espressione LINQ in modalità remota e quelli che fanno in modo che LightSwitch valuti un'espressione LINQ a livello locale.
Operazioni di LINQ: Remoto VS. l'esecuzione locale
Se si utilizza un oggetto EntitySet o IDataServiceQueryable in un'espressione LINQ, LightSwitch passa l'intera espressione LINQ al servizio dati del livello server.I risultati dell'espressione vengono quindi passati nuovamente al codice chiamante.Questo tipo di esecuzione di query funziona bene perché solo le entità che soddisfano la query vengono restituite al codice chiamante.Tuttavia, solo un subset di operatori di query è supportato dal servizio dati.Se l'espressione richiede altri operatori LINQ, utilizzare gli altri tipi di oggetti Collection.
Nell'immagine riportata di seguito viene illustrata un'espressione LINQ che utilizza un oggetto IDataServiceQueryable.In questo esempio viene mostrata l'operazione LINQ che passa l'intera espressione al servizio dati e che restituisce solo le entità Order che soddisfano le condizioni della query.
Se si utilizza un oggetto IEnumerable o EntityCollection in un'espressione LINQ, LightSwitch non passa l'espressione al servizio dati.Al contrario, LightSwitch recupera tutte le entità del tipo specificato.L'espressione viene applicata all'intera raccolta a livello locale.Se una raccolta di entità è grande, questo tipo di esecuzione di query può influire negativamente sulle prestazioni.Il codice può tuttavia utilizzare il set completo di operatori LINQ.Inoltre, questo approccio potrebbe avere senso quando si desidera passare le entità di raccolta complete agli altri metodi nel codice.
Nell'immagine riportata di seguito viene illustrata un'espressione LINQ che utilizza un oggetto EntityCollection.In questo esempio viene mostrata l'operazione LINQ che recupera tutte le entità Order per un particolare cliente.Le condizioni della query vengono applicate all'intera raccolta a livello locale.
Esempi: Acquisizione di oggetti della raccolta di entità nel codice
Di seguito viene illustrato come è possibile ottenere raccolte di entità Order nel database di esempio Northwind.
Per ottenere questo oggetto della raccolta di entità |
Utilizzare questo codice |
Esecuzione remota o locale |
---|---|---|
EntitySet |
DataWorkspace.Northwind.Orders oppure myOrder.Details.EntitySet() |
Remote |
IDataServiceQueryable |
myCustomer.OrdersQuery oppure DataWorkspace.Northwind.Orders.GetQuery() |
Remote |
EntityCollection |
myCustomer.Orders |
Locale |
IEnumerable |
myCustomer.OrdersQuery.Execute() oppure DataWorkspace.Northwind.Orders.GetQuery().Execute() |
Remote |
Vedere anche
Concetti
Esecuzione delle attività relative ai dati tramite codice
Scrittura di codice in LightSwitch