Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Entity SQL zengin bir işlevsel dildir. Entity SQL'in yapı taşı bir ifadedir. Geleneksel SQL'in aksine, Entity SQL tablolu sonuç kümesiyle sınırlı değildir: Entity SQL değişmez değerler, parametreler veya iç içe ifadelere sahip olabilecek karmaşık ifadeler oluşturmayı destekler. İfadedeki bir değer parametreleştirilebilir veya başka bir ifadeden oluşabilir.
İç İçe İfadeler
İç içe ifade, döndürdüğü türde bir değerin kabul edildiği herhangi bir yere yerleştirilebilir. Örneğin:
-- Returns a hierarchical collection of three elements at top-level.
-- x must be passed in the parameter collection.
ROW(@x, {@x}, {@x, 4, 5}, {@x, 7, 8, 9})
-- Returns a hierarchical collection of one element at top-level.
-- x must be passed in the parameter collection.
{{{@x}}};
İç içe geçen bir sorgu, bir projeksiyon cümlesine yerleştirilebilir. Örneğin:
-- Returns a collection of rows where each row contains an Address entity.
-- and a collection of references to its corresponding SalesOrderHeader entities.
SELECT address, (SELECT DEREF(soh)
FROM NAVIGATE(address, AdventureWorksModel.FK_SalesOrderHeader_Address_BillToAddressID) AS soh)
AS salesOrderHeader FROM AdventureWorksEntities.Address AS address
Entity SQL'de iç içe sorguların her zaman parantez içine alınması gerekir:
-- Pseudo-Entity SQL
( SELECT …
FROM … )
UNION ALL
( SELECT …
FROM … );
Aşağıdaki örnekte, ifadelerin Entity SQL'de düzgün bir şekilde nasıl iç içe yerleştirilmesi gösterilmektedir: Nasıl yapılır: İki Sorgu birleşimini sıralama.
Projeksiyonda İç İçe Sorgular
Proje yan tümcesindeki iç içe sorgular, sunucudaki Kartezyen ürün sorgularına çevrilebilir. SQL Server da dahil olmak üzere bazı arka uç sunucularında bu, TempDB tablosunun çok büyük olmasını sağlayabilir ve bu da sunucu performansını olumsuz etkileyebilir.
Aşağıda, böyle bir sorgu örneği verilmiştir:
SELECT c, (SELECT c, (SELECT c FROM AdventureWorksModel.Vendor AS c ) As Inner2 FROM AdventureWorksModel.JobCandidate AS c ) As Inner1 FROM AdventureWorksModel.EmployeeDepartmentHistory AS c
İç İçe Sorguları Sıralama
Entity Framework'te iç içe ifade sorgunun herhangi bir yerine yerleştirilebilir. Entity SQL sorguları yazarken büyük esneklik sağladığından, iç içe sorguların sırasını içeren bir sorgu yazmak mümkündür. Ancak iç içe sorgunun sırası korunmaz.
-- The following query will order the results by last name.
SELECT C1.FirstName, C1.LastName
FROM AdventureWorksModel.Contact as C1
ORDER BY C1.LastName
-- In the following query, ordering of the nested query is ignored.
SELECT C2.FirstName, C2.LastName
FROM (SELECT C1.FirstName, C1.LastName
FROM AdventureWorksModel.Contact as C1
ORDER BY C1.LastName) as C2