TREAT (Entity SQL)
Memperlakukan objek jenis dasar tertentu sebagai objek jenis turunan yang ditentukan.
Sintaks
TREAT ( expression as type)
Argumen
expression
Ekspresi kueri apa pun yang valid yang mengembalikan entitas.
Catatan
Jenis ekspresi yang ditentukan harus merupakan subjenis dari jenis data yang ditentukan, atau jenis data harus berupa subjenis dari jenis ekspresi.
type
Jenis entitas. Jenis harus memenuhi syarat oleh namespace layanan.
Catatan
Ekspresi yang ditentukan harus berupa subjenis dari jenis data yang ditentukan, atau jenis data harus berupa subjenis dari ekspresi.
Tampilkan Nilai
Nilai dari jenis data yang ditentukan.
Keterangan
TREAT digunakan untuk melakukan upcasting antar kelas terkait. Misalnya, jika Employee
berasal dari Person
dan p berjenis Person
, TREAT(p AS NamespaceName.Employee)
menaikkan instans Person
generik menjadi Employee
; yaitu, memungkinkan Anda untuk memperlakukan p sebagai Employee
.
TREAT digunakan dalam skenario pewarisan di mana Anda dapat melakukan kueri seperti berikut:
SELECT TREAT(p AS NamespaceName.Employee)
FROM ContainerName.Person AS p
WHERE p IS OF (NamespaceName.Employee)
Kueri ini meningkatkan entitas Person
ke jenis Employee
. Jika nilai p sebenarnya bukan berjenis Employee
, ekspresi menghasilkan nilai null
.
Catatan
Ekspresi yang ditentukan Employee
harus berupa subjenis dari jenis data yang ditentukan Person
, atau jenis data harus berupa subjenis dari ekspresi. Jika tidak, ekspresi akan menghasilkan kesalahan waktu kompilasi.
Tabel berikut menunjukkan perilaku memperlakukan beberapa pola yang khas dan beberapa pola yang kurang umum. Semua pengecualian dilemparkan dari sisi klien sebelum penyedia dipanggil:
Pola | Perilaku |
---|---|
TREAT (null AS EntityType) |
Menampilkan DbNull . |
TREAT (null AS ComplexType) |
Memberikan pengecualian. |
TREAT (null AS RowType) |
Memberikan pengecualian/ |
TREAT (EntityType AS EntityType) |
Mengembalikan EntityType atau null . |
TREAT (ComplexType AS ComplexType) |
Memberikan pengecualian. |
TREAT (RowType AS RowType) |
Memberikan pengecualian. |
Contoh
Kueri Entity SQL berikut menggunakan operator TREAT untuk mengonversi objek berjenis Kursus menjadi kumpulan objek berjenis OnsiteCourse. Kueri didasarkan pada Model Sekolah.
SELECT VALUE TREAT (course AS SchoolModel.OnsiteCourse)
FROM SchoolEntities.Courses AS course
WHERE course IS OF( SchoolModel.OnsiteCourse)