zoukankan      html  css  js  c++  java
  • 介绍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語法控制 一般 較好 最好
    支援的函式 一般
    開發速度 最佳 一般 一般

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

  • 相关阅读:
    pycharm运行程序,总是出现IPthony界面(IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help. PyDev console: using IPython 6.2.1)
    《剑指offer》第十一题:旋转数组的最小数字
    《剑指offer》第十题:斐波那契数列
    《剑指offer》第九题:用两个栈实现队列
    《剑指offer》第八题:二叉树的下一个节点
    《剑指offer》第七题:重建二叉树
    《剑指offer》第六题:从尾到头打印链表
    《剑指offer》第五题:替换空格
    《剑指offer》第四题:二维数组中的查找
    《剑指offer》第三题II:不修改数组找出重复的数字
  • 原文地址:https://www.cnblogs.com/cmblogs/p/4062142.html
Copyright © 2011-2022 走看看