介绍EF提供的3中查询方式

 

這邊簡單介紹一下,ADO.Net Entity Framework 提供的三種查詢方式,

  1. Linq to Entities
  2. Query Builder Mothed
  3. Entity SQL Language 

【Linq to Entities】

Linq to Entities 是最常見的語法,也是用最多的, 
來看一個範例

 

1 ////示範 Linq to Enities
2 using (TestEntities te = new TestEntities())
3 {
4     var user = from a in te.User
5                where a.UserDepartment.UserDepartment_name == "經理部"
6                orderby a.User_id
7                select a;
8 }

 

 語法是不是跟TSQL語法很像呢, 
再來看另一種寫法,改用【Lambda】 

 

1 ////示範 Linq to Enities 改用 Lambda方式
2 using (TestEntities te = new TestEntities())
3 {
4     var user = te.User.Where(a => a.UserDepartment.UserDepartment_name == "經理部")
5                       .OrderBy(a => a.User_id)
6                       .Select(a => a);
7 }

 

  兩個範例執行完的結果都一樣,我個人是都採用Lambda的方式撰寫。  

【Query Builder Mothed】

直接來看範例比較容易了解

 

1 ////示範 Query Builder Mothed
2 using (TestEntities te = new TestEntities())
3 {
4     var user = te.User.Where("it.UserDepartment.UserDepartment_name == \"經理部\"")
5                       .OrderBy("it.User_id");                                 
6 }

 

 在查詢時,可以將要查詢的條件、欄位等語法,利用字串方式傳入, 
透過Query Builder Mothed執行。 
比較特別的是字串中的 "it" ,是保留字,代表自己。 

【Entity SQL Language】

擷取一段 MSDN 上的說明,來解釋甚麼是 Entity SQL Language 
” Entity SQL Language 是與 SQL 類似且與儲存體無關的語言。Entity SQL 的設計目標是用來查詢及管理以 實體資料模型 (EDM) 為基礎之物件的豐富物件圖形。” 
簡單說 我們可以利用 Entity SQL Language 來執行查詢,"只有查詢唷",不支援更新、新增、刪除等動作, 
為什麼要有 Entity SQL Language以及如何使用、跟一般TSQL差異等議題,在找機會來介紹, 
這邊先簡單看一下示範語法

1 ////示範 Entity SQL Language
2 using (TestEntities te = new TestEntities())
3 {
4     string entitySQL = "SELECT Value a FROM User as a";
5     entitySQL += " WHERE a.UserDepartment.UserDepartment_name == \"經理部\"";
6     entitySQL += " Order by a.User_id";
7     var user = te.CreateQuery<User>(entitySQL);
8 }

 

  

上面的範例的執行結果都是一樣的, 
我們來簡單做一下總結

比較

  Linq to Entities Query Builder Mothed Entity SQL Language
IntelliSence
設計時期除錯
動態查詢
對Provider產生的SQL語法控制 一般 較好 最好
支援的函式 一般
開發速度 最佳 一般 一般

 這邊簡單說明了三種查詢方式, 
各位可以依照適合的情境去選擇。
 

參考連結
Entity SQL 語言
LINQ to Entities 概觀
查詢產生器方法 (Entity Framework)

转自http://www.dotblogs.com.tw/asdtey/archive/2009/10/22/efquerytype.aspx

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭