Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
Considera un oggetto di un tipo di base specifico come oggetto del tipo derivato specificato.
Sintassi
TREAT ( expression as type)
Argomenti
expression Qualsiasi espressione di query valida che restituisce un'entità.
Annotazioni
Il tipo dell'espressione specificata deve essere un sottotipo del tipo di dati specificato oppure il tipo di dati deve essere un sottotipo del tipo di espressione.
type Tipo di entità. Il tipo deve essere qualificato da uno spazio dei nomi.
Annotazioni
L'espressione specificata deve essere un sottotipo del tipo di dati specificato oppure il tipo di dati deve essere un sottotipo dell'espressione.
Valore restituito
Valore del tipo di dati specificato.
Osservazioni:
TREAT viene usato per eseguire il upcast tra le classi correlate. Ad esempio, se Employee deriva da Person e p è di tipo Person, TREAT(p AS NamespaceName.Employee) esegue il upcast di un'istanza generica Person a Employee, ovvero consente di trattare p come Employee.
TREAT viene usato negli scenari di ereditarietà in cui è possibile eseguire una query simile alla seguente:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Questa query consente di eseguire il upcast delle Person entità nel Employee tipo . Se il valore di p non è effettivamente di tipo Employee, l'espressione restituisce il valore null.
Annotazioni
L'espressione Employee specificata deve essere un sottotipo del tipo di Persondati specificato oppure il tipo di dati deve essere un sottotipo dell'espressione. In caso contrario, l'espressione genererà un errore in fase di compilazione.
La tabella seguente illustra il comportamento di trattare alcuni modelli tipici e alcuni modelli meno comuni. Tutte le eccezioni vengono generate dal lato client prima che venga richiamato il provider:
| Modello | Comportamento |
|---|---|
TREAT (null AS EntityType) |
Restituisce DbNull. |
TREAT (null AS ComplexType) |
Genera un'eccezione. |
TREAT (null AS RowType) |
Genera un'eccezione/ |
TREAT (EntityType AS EntityType) |
Restituisce EntityType o null. |
TREAT (ComplexType AS ComplexType) |
Genera un'eccezione. |
TREAT (RowType AS RowType) |
Genera un'eccezione. |
Esempio
La query Entity SQL seguente usa l'operatore TREAT per convertire un oggetto del tipo Course in un insieme di oggetti di tipo OnsiteCourse. La query si basa sul modello school.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)