介绍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 EntitiesQuery Builder MothedEntity SQL Language
IntelliSence
設計時期除錯
動態查詢
對Provider產生的SQL語法控制一般較好最好
支援的函式一般
開發速度最佳一般一般

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

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

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值