介绍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
2using (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方式
2using (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
2using (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
2using (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語法控制一般較好最好
支援的函式一般
開發速度最佳一般一般

 

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

转载于:https://www.cnblogs.com/cmblogs/p/4062142.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值