ADO.Net Entity Framework : (十八) 介紹 EF 提供的三種查詢方式

這邊簡單介紹一下,ADO.Net Entity Framework 提供的三種查詢方式,
1.Linq to Entities
2.Query Builder Mothed
3.Entity SQL Language

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

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

【Linq to Entities】

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


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

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


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

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

【Query Builder Mothed】

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


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

 在查詢時,可以將要查詢的條件、欄位等語法,利用字串方式傳入,
透過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差異等議題,在找機會來介紹,
這邊先簡單看一下示範語法


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

  

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

比較

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

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

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




 


 

  • 如果您覺得這篇文章有幫助,請您幫忙推薦一下或按上方的""給予支持,非常感激
  • 歡迎轉載,但請註明出處
  • 文章內容多是自己找資料學習到的心得,如有不詳盡或錯誤的地方,請多多指教,謝謝