這邊簡單介紹一下,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. Win7中隐藏的上帝模式——GodMode

    Win7中隐藏的上帝模式——GodMode ~ Windows7中的隐藏模式 ~   随意新建一个文件夹吧,然后重命名为:   GodMode.{ED7BA470-8E54-465E-825C-997 ...

  2. 抽象类(abstract)是否可以继承自实体类 ?

    可以. 但是这个实体类必须有无参构造函数(默认的构造函数). 如: public class A { //这个构造函数必须要有(在没有构造函数重载时可以省略,因为运行时会为A添加默认构造函数) pub ...

  3. wordpress忘记密码重置

    一直使用浏览器记录密码的方式登陆wordpress,直到有一天重装系统,而浏览器的记录又没有备份,结果怎么也想不起当初所设定的密码了…… -_-||| 遂google了一番,发现了直接修改数据库重设密 ...

  4. IOS_设置启动图片若干问题

    在做项目时, 发现设置了LaunchImage时发现一些问题: 1. 启动图片的设置可以通过两种方法: 1) 通过在LaunchScreen里放入ImageView 并设置图片, 这种方法的好处在于不 ...

  5. DirectoryEntry配置IIS出现ADSI Error:未知错误(0x80005000)

    目录 问题案例 原因分析 解决问题 总结 问题案例 DirectoryEntry配置IIS,在IIS6.0下运转正常,但IIS7.0下运转会出错: System.DirectoryServices.D ...

  6. C#中窗体的互相访问

    1.在父窗体中构造子窗体对象时,将父窗体传递过去: 如:FrmSub frm=new FrmSub(this);//this代表父窗体 2.将父窗体中要访问的变量和方法修改为public 3.在子窗体 ...

  7. 用开源AOP简化MVVM框架

    本文的前提是知晓基于Xaml开发,本文以WPF为例 一 .简化属性通知事件 普通的属性通知会写一个基于INotifyPropertyChanged接口的类 public class RasieProp ...

  8. 【转】 申请对齐某种结构体大小的buffer

    在大多数情况下,编译器和C库透明地帮你处理对齐问题.POSIX 标明了通过malloc( ), calloc( ), 和 realloc( ) 返回的地址对于任何的C类型来说都是对齐的.在Linux中 ...

  9. Serverless 架构:用服务代替服务器

    Serverless 架构:用服务代替服务器 转载本文需注明出处:EAII企业架构创新研究院(微信号:eaworld),违者必究.如需 加入微信群参与微课堂.架构设计与讨论直播请直接回复此公众号:&q ...

  10. 设计模式Builder(建造者)模式

    1.出现原因 在软件系统中,有时候会面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成:由于需求的变化,这个复杂的对象的各个部分可能面临着剧烈的变化,但是把他们组合在一起的算法 ...