Entity SQl是ADO.NET實體框架提供的SQl類語言,用於支持實體數據模型(EDM)。Entity SQl可用於對象查詢和使用EntityClient提供程序執行的查詢。
l 關鍵字
Value關鍵字
ESQl提供了SELECT VALUE子句以跳過隱式行構造。SELECT VALUE子句中只能指定一項。在使用這樣的子句時,將不會對SELECT子句中的項構造行包裝器,並且可生成所要形狀的集合,例如:SELECT VALUE it FROM NorthwindEntities.Customers as it
it關鍵字
it 出現在ESQl中, 查詢對象的別名默認值 "it" 改成其他字符串,例如:
"SELECT VALUE it FROM NorthwindEntities.Customers as it " 。
l 注釋:
Entity SQl 查詢可以包含注釋。注釋行以兩個短劃線(--) 開頭。
"SELECT VALUE it FROM NorthwindEntities.Customers as it -- this a comment "
l Select查詢
例如:
SELECT VALUE it FROM NorthwindEntities.Customers as it
l 參數
參數是在esql之外定義的變量,每個參數都有名稱和類型,參數名稱在查詢表達式中定義,並以@符號作為前綴。例如:
Select VALUE c from NorthwindEntities.Customers as c where c.CustomerID=@customerID
l 聚合
Enity SQL不支持 * ,所以esql不支持count(*),而是使用count(0),例如:
Select count(0) from NorthwindEntities.Customers
l 分頁SKIP/LIMIT
可以通過在ORDER BY子句中使用SKIP 和 LIMIT子子句執行物理分頁。若要以確定的方式執行物理分頁,應使用SKIP 和 LIMIT。如果您只是希望以非確定的方式限制結果中的行數,則應使用TOP。TOP 和 SKIP/LIMIT是互斥的
使用SKIP/LIMIT分頁,esql代碼如下:
Select value c from NorthwindEntities.Customers as c order by c.CustomerID skip 0 limit 10
l TOP
SELECT子句可以在可選的ALl /DISTINCT 修飾符之後具有可選的TOP子子句。TOP子子句指定查詢結果中將只返回第一組行。esql代碼如下:
Select top(10) c.CustomerID from NorthwindEntities.Customers as c order by c.CustomerID
l NULL處理
Null文本與Entity SQl類型系統中的任何類型都兼容,可以使用cast進行類型轉換,例如:
select cast(c.region as string) from NorthwindEntities.Customers as c order by c.CustomerID limit 10
其中, Nvarchar等可以成string,數字類型可以轉成int32,其他的類型轉換類似。如果無法完成轉換,則將報異常。還有可以處理的方法有treat。