這邊簡單介紹一下,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 Entities Query Builder Mothed Entity SQL Language
IntelliSence
設計時期除錯
動態查詢
對Provider產生的SQL語法控制 一般 較好 最好
支援的函式 一般
開發速度 最佳 一般 一般

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

EF提供的三种查询方式的更多相关文章

  1. Hibernate的Api以及三种查询方式

    Hibernate  Api |-- Configuration       配置管理类对象 config.configure();    加载主配置文件的方法(hibernate.cfg.xml) ...

  2. hibernate的三种查询方式

    hibernate的三种查询方式 目录 hibernate的三种查询方式 1.HQL查询 1.1.SQL概述 1.2.实体查询 1.3.带where的查询 1.3.属性查询 1.4.实体的更新和删除 ...

  3. EF框架的三种工作方式

    EF框架step by step(1)—Database-First EF框架step by step(2)—Model-First EF框架step by step(3)—Code-First 通过 ...

  4. 初学者易上手的SSH-hibernate02 三种查询方式

    在上一章中已经搭建好了一个hibernate的环境,那么这一章我们就使用这个环境来进行基本CRUD.在这之前我们先了解一个东西:主键生成策略.就是当向数据库表中插入记录的时候,这个记录的主键该如何生成 ...

  5. django 神奇的双下划线,通过外键的三种查询方式

    一,用于跨表操作 只要是object后面字符串都是用双下划线__.其它地方用点. 如:的values中的group_code__name.group_code是一个外键 def list(reques ...

  6. EF提供的3中查询方式

    1. Linq to Entities using (TestEntities te = new TestEntities()) { var user = from a in te.User wher ...

  7. mybatis学习四 mybatis的三种查询方式

    <select id="selAll" resultType="com.caopeng.pojo.Flower"> select * from fl ...

  8. Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加

    Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...

  9. Qt 2D绘图 渐变填充(三种渐变方式)

    在qt中提供了三种渐变方式,分别是线性渐变,圆形渐变和圆锥渐变.如果能熟练应用它们,就能设计出炫目的填充效果. 线性渐变: 1.更改函数如下: void Dialog::paintEvent(QPai ...

随机推荐

  1. js密码的校验(判断字符类型、统计字符类型个数)

    /** *判断字符类型 */ function CharMode(iN) { if (iN >= 48 && iN <= 57) //数字 return 1; if (iN ...

  2. C++ 11 之学习总结

    感慨时间过的好快,C++ 11出来都5年了,现在才开始学习,但为时也不晚: 主要是网上及身边的朋友大肆宣扬C++ 11的某些优化,弄得别人心里痒痒的,所以就花了3天学习了点基本知识,相对于整个C++ ...

  3. Css调整字体间距

    在span div 某些元素中有时候会用到调整字体的间距,设置方法: letter-spacing:15px;  

  4. 配置普通用户可以运行saltstack的模块

    client_acl 配置使用 1.概述:开启对系统上非root的系统用户在master上可以执行特殊的模块.这些模块名可以使用正则表达式来表示,不能指定对哪些minion执行命令.执行命令只需要切换 ...

  5. 12.iscsi-target

    server: 环境:rhel7.2  软件包:targetcli-2.1.fb41-3.el7.noarch,selinux-policy-targeted-3.13.1-60.el7.noarch ...

  6. Nginx的平滑重启和平滑升级

    一,Nginx的平滑重启如果改变了Nginx的配置文件(nginx.conf),想重启Nginx,可以发送系统信号给Nginx主进程的方式来进行.在重启之前,要确认Nginx配置文件的语法是正确的. ...

  7. ASP 连接 MySQL 数据库两种方法

    一般都是用myodbc来连接.首先,在系统中安装 Mysql 的ODBC数据库驱动.如安装稳定版本是3.51.下载地址是:http://dev.mysql.com/downloads/connecto ...

  8. libcurl

    一.LibCurl基本编程框架 二.一些基本的函数 三.curl_easy_setopt函数部分选项介绍 四.curl_easy_perform 函数说明(error 状态码) 五.libcurl使用 ...

  9. SOS.dll(SOS 调试扩展)

      SecAnnotate.exe(.NET 安全批注器工具) SignTool.exe(签名工具) Sn.exe(强名称工具) SOS.dll(SOS 调试扩展)   SqlMetal.exe(代码 ...

  10. NGUI3.5系列教程之 一些小功能的实现

    (一)可拖动窗体的实现: 1:添加一个Sprite为鼠标点击区域,改名为:DragSprite 2:给DragSprite添加Collider 3:给DragSprite添加Drag Object , ...