Condividi tramite


Utilizzo degli oggetti correlati ai dati nel codice

LightSwitch genera oggetti e membri che descrivono i propri dati. I nomi di questi oggetti e membri corrispondono ai nomi degli elementi presenti nella propria soluzione. Ad esempio, se si aggiunge una tabella denominata Customer, LightSwitch genera un oggetto denominato Customer. Questo argomento descrive ogni tipo di oggetto generato da LightSwitch. Per visualizzare esempi di codice che usano questi oggetti e membri per eseguire attività comuni relative ai dati, vedere Esecuzione delle attività relative ai dati tramite codice.

Gerarchia di oggetti e membri generati

La figura seguente riepiloga gli oggetti e i membri generati del proprio modello di dati.

Gerarchia di oggetti generati

Applicazione

L'oggetto Application fornisce l'accesso di primo livello agli oggetti presenti nell'applicazione. Per accedere all'oggetto Application aprire qualsiasi file di codice utente nell'editor di codice e quindi digitare Application. I tipi di metodi e proprietà visualizzati in IntelliSense dopo aver digitato Application e quindi "." cambieranno in base al file di codice in cui si scrive il codice. Nella maggior parte dei casi è possibile usare una proprietà dell'oggetto Application per ottenere un oggetto che rappresenti 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 presente nel progetto. Ad esempio, se si ha un'origine dati denominata NorthwindData, LightSwitch genera una proprietà denominata NorthwinddData. Quando si digita DataWorkspace nell'editor di codice, la proprietà NorthwindData diviene disponibile in un elenco a discesa.

La figura seguente illustra alcuni membri generati che potrebbero essere visualizzati in un elenco a discesa.

Proprietà dell'origine dati dell'oggetto DataWorkspace

Origine dati

LightSwitch genera un oggetto per ogni origine dati presente nel progetto. Questo oggetto contiene membri che è possibile usare per accedere ai dati. I membri di un oggetto di origine dati includono le proprietà del set di entità e i metodi di query.

La figura seguente illustra alcuni membri generati che potrebbero essere visualizzati in un elenco a discesa.

Membri dell'oggetto origine dati

Proprietà del set di entità

La proprietà di un 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 usare 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 verificare se l'utente corrente ha l'autorizzazione per leggere, aggiornare o eliminare le entità nella raccolta. Per altre informazioni, vedere Esecuzione delle attività relative ai dati tramite codice.

Nota

EntitySet è uno dei diversi tipi di oggetti raccolta di entità.Per ottimizzare le prestazioni del codice, assicurarsi di usare il tipo corretto di oggetto raccolta di entità per il tipo di logica di business che si sta scrivendo.Per altre 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 che viene definita nell'origine dati. Il nome del metodo corrisponde al nome della query. Una query può restituire una singola entità oppure una raccolta di entità di tipo IDataServiceQueryable.

Nota

IDataServiceQueryable<T> è uno dei diversi tipi di oggetti raccolta di entità.Per ottimizzare le prestazioni del codice, assicurarsi di usare il tipo corretto di oggetto raccolta di entità per il tipo di logica di business che si sta scrivendo.Per altre 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.

  1. <Nome entità>_Single.

  2. <Nome entità>_SingleOrDefault.

Entrambi i metodi accettano un segmento di chiave primaria e restituiscono un singolo oggetto entità. Se non viene restituita alcuna entità, il metodo <Nome entità>_Single genera un'eccezione mentre il metodo <Nome entità>_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, essa conterrebbe un EntityObject che rappresenta ogni ordine. Un EntityObject contiene membri che è possibile usare per eliminare un'entità, leggere o aggiornare il valore delle proprietà dell'entità oppure ottenere entità correlate. È possibile ottenere un EntityObject da un oggetto raccolta di entità come EntitySet oppure chiamando un metodo di query che restituisca un'entità. Per altre informazioni, vedere Esecuzione delle attività relative ai dati tramite codice.

La figura seguente illustra i membri di un'entità Order denominata myOrder. L'entità Order contiene proprietà dell'entità quali OrderDate, OrderID e Freight. L'entità Order ha anche dei membri che è possibile usare per ottenere la raccolta Order_Details correlata e il Customer che ha inoltrato l'origine.

Proprietà di un oggetto entità

In questo esempio, la proprietà Customer restituisce un'entità Customer. Un'entità Customer si trova su un lato della relazione Customer-Order.

La proprietà Order_Details restituisce una raccolta di entità Order_Details. L'entità Order_Details si trova dal lato molti della relazione Order-Order_Details. L'oggetto raccolta Order_Details è del tipo EntityCollection.

Questa figura illustra anche 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 raccolta di entità.Per ottimizzare le prestazioni del codice, assicurarsi di usare il tipo corretto di oggetto raccolta di entità per il tipo di logica di business che si sta scrivendo.Per altre informazioni, vedere Oggetti e prestazioni della raccolta di entità.

Oggetti e prestazioni della raccolta di entità

Quando si usa un oggetto raccolta di entità in un'espressione LINQ, LightSwitch esegue un'operazione che consente di recuperare le entità dal livello server. Il tipo di oggetto usato determina se LightSwitch recupera tutte le entità in una raccolta oppure solo un subset delle stesse. Per garantire il comportamento previsto del codice, scegliere il tipo di oggetto raccolta più appropriato per la logica di business che si sta scrivendo. Esistono due tipi di oggetti raccolta entità: oggetti che obbligano LightSwitch a valutare un'espressione LINQ in remoto e oggetti che obbligano LightSwitch a valutare un'espressione LINQ in locale.

Operazioni LINQ: esecuzione remotae locale

Se si usa un oggetto EntitySet o IDataServiceQueryable in un'espressione LINQ, LightSwitch passa l'intera espressione LINQ al servizio dati del livello server. Quindi, i risultati dell'espressione vengono ritrasmessi al codice di chiamata. Questo tipo di esecuzione di query ha un esito positivo perché solo le entità che soddisfano la query vengono restituite al codice di chiamata. Tuttavia, il servizio dati supporta solo un subset di operatori di query. Se l'espressione richiede altri operatori LINQ, considerare l'uso di altri tipi di oggetti raccolta.

La figura seguente illustra un'espressione che usa un oggetto IDataServiceQueryable. Questo esempio dimostra l'operazione LINQ che passa l'intera espressione al servizio dati e restituisce solo entità Order che soddisfano le condizioni della query.

Esecuzione remota di un'espressione di query

Se si usa un oggetto EntityCollection o IEnumerable in un'espressione LINQ, LightSwitch non passa l'espressione al servizio dati, ma recupera invece tutte le entità di un determinato tipo. Quindi, l'espressione viene applicata all'intera raccolta in locale. Se le dimensioni di una raccolta di entità sono consistenti, questo tipo di esecuzione di query può influire negativamente sulle prestazioni. Il codice può tuttavia usare il set completo di operatori LINQ. In aggiunta, questo approccio può essere utile per passare l'intera raccolta di entità agli altri metodi nel codice.

La figura seguente illustra un'espressione LINQ che usa un oggetto EntityCollection. Questo esempio illustra l'operazione LINQ che recupera tutte le entità Order per un particolare cliente. Quindi, le condizioni della query vengono applicate all'intera raccolta in locale.

Esecuzione locale di un'espressione di query

Esempi: Ottenere oggetti raccolta entità in codice

Di seguito è indicato come ottenere raccolte di entità Order nel database di esempio Northwind.

Per ottenere questo oggetto raccolta di entità

Usare questo codice

Esecuzione remota o locale

EntitySet

DataWorkspace.Northwind.Orders

oppure

myOrder.Details.EntitySet()

Remota

IDataServiceQueryable

myCustomer.OrdersQuery

oppure

DataWorkspace.Northwind.Orders.GetQuery()

Remota

EntityCollection

myCustomer.Orders

Locale

IEnumerable

myCustomer.OrdersQuery.Execute()

oppure

DataWorkspace.Northwind.Orders.GetQuery().Execute()

Remota

Vedere anche

Concetti

Esecuzione delle attività relative ai dati tramite codice

Altre risorse

Dati: informazioni sottostanti l'applicazione