TREAT (Entity SQL)
Consente di trattare un oggetto di un tipo di base particolare come oggetto del tipo derivato specificato.
TREAT ( expression as type)
Argomenti
expression
Qualsiasi espressione di query valida che restituisce un'entità.Nota 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.Nota 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 utilizzato per eseguire l'upcast tra classi correlate. Se, ad esempio, Employee deriva da Person e p è di tipo Person, TREAT(p AS NamespaceName.Employee)
consente di eseguire l'upcast di un'istanza generica di Person a Employee, ovvero consente di trattare p come Employee.
TREAT viene utilizzato negli scenari di ereditarietà dove è 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 l'upcast delle entità Person al tipo Employee. Se il valore di p non è di tipo Employee, l'espressione restituisce il valore null.
Nota |
---|
L'espressione specificata |
Nella tabella seguente viene illustrato il comportamento di TREAT su alcuni modelli tipici e su alcuni modelli meno comuni. Tutte le eccezioni vengono generate sul lato client prima che il provider venga richiamato:
Modello | Comportamento |
---|---|
|
Restituisce DbNull |
|
Genera un'eccezione |
|
Genera un'eccezione |
|
Restituisce EntityType o null |
|
Genera un'eccezione |
|
Genera un'eccezione |
Esempio
Nella query Entity SQL seguente viene utilizzato l'operatore TREAT per convertire un oggetto del tipo People in un insieme di oggetti del tipo Student. La query è basata sul modello School Entity Data Model. Per informazioni su come generare questo modello, vedere Generazione del modello EDM School (guida rapida di Entity Framework).
SELECT VALUE TREAT (people as SchoolDataLib.Student)
FROM SchoolDataEntities.People as people
WHERE people IS OF( SchoolDataLib.Student)
L'output ottenuto eseguendo l'esempio è il seguente:
Chow
Haas
Hamilton
Adams
Paschke
Abrus
Hance
Vedere anche
Concetti
Operatori di tipo (Entity SQL)
Riferimenti a Entity SQL
Tipi strutturati che ammettono valori Null (Entity SQL)