Condividi tramite


Guida di riferimento rapido a Entity SQL

In questo argomento viene fornita una guida di riferimento rapido alle query Entity SQL. Le query incluse in questo argomento sono basate sul modello Sales di AdventureWorks.

Valori letterali

String

I valori letterali carattere di tipo String possono essere Unicode e non Unicode. Alle stringhe non Unicode viene anteposta una N, ad esempio N'hello'.

Di seguito è illustrato un esempio di valore letterale stringa Unicode:

'hello'
--same as
"hello"

Output:

Valore

hello

DateTime

Nei valori letterali di tipo DateTime sono obbligatorie sia la parte relativa alla data che quella relativa all'ora. Non sono previsti valori predefiniti.

Esempio:

DATETIME '2006-12-25 01:01:00.000' 
--same as
DATETIME '2006-12-25 01:01'

Output:

Valore

12/25/2006 1:01:00 AM

Integer

I valori letterali Integer possono essere di tipo Int32 o Int64.

Esempio:

--a collection of integers
{1, 2, 3}

Output:

Valore

1

2

3

Altro

Gli altri valori letterali supportati da Entity SQL sono Guid, Binary, Float/Double, Decimal e null. I valori letterali Null in Entity SQL sono considerati compatibili con tutti i tipi in Entity Data Model (EDM).

Costruttori di tipo

ROW

ROW (Entity SQL) consente di costruire un valore (record) strutturalmente tipizzato anonimo, come in ROW(1 AS myNumber, ‘Name’ AS myName).

Esempio:

SELECT VALUE row (product.ProductID as ProductID, product.Name 
    as ProductName) FROM AdventureWorksEntities.Product AS product

Output:

ProductID Name

1

Adjustable Race

879

All-Purpose Bike Stand

712

AWC Logo Cap

...

...

MULTISET

MULTISET (Entity SQL) consente di costruire insiemi, ad esempio:

MULTISET(1,2,2,3)``--same as-{1,2,2,3}.

Esempio:

SELECT VALUE product FROM AdventureWorksEntities.Product AS product WHERE product.ListPrice IN MultiSet (125, 300)

Output:

ProductID Name ProductNumber

842

Touring-Panniers, Large

PA-T100

Oggetto

Costruttore di tipi denominati (Entity SQL) consente di costruire oggetti definiti dall'utente (denominati), ad esempio person("abc", 12).

Esempio:

SELECT VALUE AdventureWorksModel.SalesOrderDetail (o.SalesOrderDetailID, o.CarrierTrackingNumber, o.OrderQty, 
o.ProductID, o.SpecialOfferID, o.UnitPrice, o.UnitPriceDiscount, 
o.rowguid, o.ModifiedDate) FROM AdventureWorksEntities.SalesOrderDetail 
AS o

Output:

SalesOrderDetailID CarrierTrackingNumber OrderQty ProductID

1

4911-403C-98

1

776

2

4911-403C-98

3

777

...

...

...

...

Riferimenti

REF

REF consente di creare un riferimento a un'istanza di un tipo di entità. La query seguente restituisce ad esempio i riferimenti a ogni entità Order nel set di entità Orders: select ref(o) from LOB.Orders as o. Nell'esempio seguente viene utilizzato l'operatore di estrazione delle proprietà (.) per accedere a una proprietà di un'entità. Quando viene utilizzato l'operatore di estrazione delle proprietà, il riferimento viene risolto automaticamente.

Esempio:

SELECT VALUE REF(p).Name FROM 
    AdventureWorksEntities.Product as p

Output:

Valore

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

DEREF

DEREF consente di risolvere un valore di riferimento e produce il risultato di tale operazione. La query seguente restituisce ad esempio le entità Order per ogni oggetto Order nel set di entità Orders: select deref(o2.r) from (select ref(o) as r from LOB.Orders as o) as o2.

Esempio:

SELECT VALUE DEREF(REF(p)).Name FROM 
    AdventureWorksEntities.Product as p

Output:

Valore

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

CREATEREF e KEY

CREATEREF consente di creare un riferimento passando una chiave. KEY consente di estrarre la parte relativa alla chiave da un'espressione con un riferimento a un tipo.

Esempio:

SELECT VALUE Key(CreateRef(AdventureWorksEntities.Product, row(p.ProductID))) 
    FROM AdventureWorksEntities.Product as p

Output:

ProductID

980

365

771

...

Funzioni

Canoniche

Lo spazio dei nomi per le funzioni canoniche è Edm, come in Edm.Length("string"). Non è necessario specificare lo spazio dei nomi a meno che non venga importato un altro spazio dei nomi contenente una funzione con lo stesso nome della funzione canonica. Se due spazi dei nomi includono la stessa funzione, l'utente deve specificare il nome completo.

Esempio:

SELECT Length(c. FirstName) As NameLen FROM 
    AdventureWorksEntities.Contact AS c 
    WHERE c.ContactID BETWEEN 10 AND 12

Output:

NameLen

6

6

5

Specifiche del provider Microsoft

Le funzioni specifiche del provider Microsoft sono incluse nello spazio dei nomi di SqlServer.

Esempio:

SELECT SqlServer.LEN(c.EmailAddress) As EmailLen FROM 
    AdventureWorksEntities.Contact AS c WHERE 
    c.ContactID BETWEEN 10 AND 12

Output:

EmailLen

27

27

26

Spazi dei nomi

USING specifica gli spazi dei nomi utilizzati in un'espressione di query.

Esempio:

using SqlServer; LOWER('AA');

Output:

Valore

aa

Paging

Il paging può essere espresso dichiarando le sottoclausole SKIP e LIMIT nella clausola ORDER BY (Entity SQL).

Esempio:

SELECT c.ContactID as ID, c.LastName as Name FROM 
    AdventureWorks.Contact AS c ORDER BY c.ContactID SKIP 9 LIMIT 3;

Output:

ID Name

10

Adina

11

Agcaoili

12

Aguilar

Raggruppamento

GROUPING BY specifica i gruppi nei quali devono essere inseriti gli oggetti restituiti da un'espressione (SELECT) di query.

Esempio:

SELECT VALUE name FROM AdventureWorksEntities.Product as P 
    GROUP BY P.Name HAVING MAX(P.ListPrice) > 5

Output:

name

LL Mountain Seat Assembly

ML Mountain Seat Assembly

HL Mountain Seat Assembly

...

Navigazione

L'operatore di navigazione delle relazioni consente di eseguire la navigazione in una relazione da un'entità (entità finale di origine) a un'altra (entità finale di destinazione). NAVIGATE accetta il tipo di relazione qualificato come <spazio dei nomi>.<nome del tipo di relazione>. NAVIGATE restituisce Ref<T> se la cardinalità dell'entità finale è 1. Se la cardinalità dell'entità finale è n, viene restituito Collection<Ref<T>>.

Esempio:

SELECT a.AddressID, (SELECT VALUE EREF(v) FROM 
    NAVIGATE(a, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS v) 
    FROM AdventureWorksEntities.Address AS a

Output:

AddressID

1

2

3

...

SELECT VALUE e SELECT

SELECT VALUE

Entity SQL fornisce la clausola SELECT VALUE per consentire di ignorare la costruzione di riga implicita. In una clausola SELECT VALUE può essere specificato un solo elemento. Quando viene utilizzata questa clausola, non viene costruito alcun wrapper di riga intorno agli elementi nella clausola SELECT e può essere prodotto un insieme della forma desiderata, ad esempio SELECT VALUE a.

Esempio:

SELECT VALUE p.Name FROM AdventureWorksEntities.Product as p

Output:

Name

Adjustable Race

All-Purpose Bike Stand

AWC Logo Cap

...

SELECT

Entity SQL fornisce inoltre il costruttore ROW per la costruzione di righe arbitrarie. SELECT accetta uno o più elementi nella proiezione e restituisce un record di dati con campi, ad esempio SELECT a, b, c.

Esempio:

SELECT p.Name, p.ProductID FROM AdventureWorksEntities.Product as p Output:

Name ProductID

Adjustable Race

1

All-Purpose Bike Stand

879

AWC Logo Cap

712

...

...

Espressione CASE

L'espressione CASE valuta un set di espressioni booleane per determinare il risultato.

Esempio:

CASE WHEN AVG({25,12,11}) < 100 THEN TRUE ELSE FALSE END

Output:

Valore

TRUE

Vedere anche

Concetti

Riferimenti a Entity SQL
Panoramica su Entity SQL