EF提供的三种查询方式
這邊簡單介紹一下,ADO.Net Entity Framework 提供的三種查詢方式,
- Linq to Entities
- Query Builder Mothed
- 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 | 0 | X | X |
設計時期除錯 | O | X | X |
動態查詢 | X | O | O |
對Provider產生的SQL語法控制 | 一般 | 較好 | 最好 |
支援的函式 | 一般 | 多 | 多 |
開發速度 | 最佳 | 一般 | 一般 |
這邊簡單說明了三種查詢方式,
各位可以依照適合的情境去選擇。
EF提供的三种查询方式的更多相关文章
- Hibernate的Api以及三种查询方式
Hibernate Api |-- Configuration 配置管理类对象 config.configure(); 加载主配置文件的方法(hibernate.cfg.xml) ...
- hibernate的三种查询方式
hibernate的三种查询方式 目录 hibernate的三种查询方式 1.HQL查询 1.1.SQL概述 1.2.实体查询 1.3.带where的查询 1.3.属性查询 1.4.实体的更新和删除 ...
- EF框架的三种工作方式
EF框架step by step(1)—Database-First EF框架step by step(2)—Model-First EF框架step by step(3)—Code-First 通过 ...
- 初学者易上手的SSH-hibernate02 三种查询方式
在上一章中已经搭建好了一个hibernate的环境,那么这一章我们就使用这个环境来进行基本CRUD.在这之前我们先了解一个东西:主键生成策略.就是当向数据库表中插入记录的时候,这个记录的主键该如何生成 ...
- django 神奇的双下划线,通过外键的三种查询方式
一,用于跨表操作 只要是object后面字符串都是用双下划线__.其它地方用点. 如:的values中的group_code__name.group_code是一个外键 def list(reques ...
- EF提供的3中查询方式
1. Linq to Entities using (TestEntities te = new TestEntities()) { var user = from a in te.User wher ...
- mybatis学习四 mybatis的三种查询方式
<select id="selAll" resultType="com.caopeng.pojo.Flower"> select * from fl ...
- Hibernate的四种查询方式(主键查询,HQL查询,Criteria查询,本地sql查询)和修改和添加
Hibernate的添加,修改,查询(三种查询方式)的方法: 案例演示: 1:第一步,导包,老生常谈了都是,省略: 2:第二步,创建数据库和数据表,表结构如下所示: 3:第三步创建实体类User.ja ...
- Qt 2D绘图 渐变填充(三种渐变方式)
在qt中提供了三种渐变方式,分别是线性渐变,圆形渐变和圆锥渐变.如果能熟练应用它们,就能设计出炫目的填充效果. 线性渐变: 1.更改函数如下: void Dialog::paintEvent(QPai ...
随机推荐
- onclick和onblur的冲突问题
新浪首页的搜索框里面有一个使用ajax的下拉框.我们需要实现一个点击下拉框里面的一项,让搜索框里面的值变成这一项,同时下拉框消失的效果,但同时在点击其他地方的时候,这个下拉框也要消失.大致如图: 我们 ...
- jQuery 表单验证 jquery.validator.js
前端开发中经常会碰到表单的制作,其中必备的功能就是提交前的一些简单的验证,非空啊.手机号码啊.E-mail等等等等,这里是一个 jQuery 的表单验证插件,蛮好用的,收录一下. 下面是验证的效果图: ...
- 查看某个模块的Tables
在SE11 中 关于table的F4 help 有一个筛选条件是Package 同时由于不同的模块放在不同的Package中 很容易根据这个条件 获得某个模块的所有Tables 亲测有效 1 ...
- 【风马一族_git_github】使用Github搭建个人网站
个人网站 访问 https://用户名.github.io ( 风马一族的Github网站 ) 搭建步骤 1)创建个人站点-->新建仓库(注:仓库名必须是[用户名.github.io]) 2) ...
- 开始ubuntu 14.04 的装X模式---终端模式下中文输入,听歌,上irc 开启framebuffer看电影 截图
先上图吧 卡卡的全是在tty1 下的操作,看电影,听歌,截图 ,看图 ,上irc 等等,相当适合在小白面前装屁! 需要安装的软件: 为了能正常显示中文:安装fbterm sudo apt-get i ...
- 如何在Mac下使用TF/SD 卡制作Exynos 4412 u-boot启动盘
/** ****************************************************************************** * @author Maox ...
- php header函数实例代码
一个完美的演示PHP header()函数用法的完整代码. 其中介绍的refresh方法,比<META ……用起来更得心应手,应该是段不错的代码. <?php /*** Function ...
- 扩展 delphi 线程 使之传递参数.
新delphi的线程TThread有了CreateAnonymousThread方法,如果再为它加一个可传递的参数不就更好了吗?代码如下: TAnonymousThreadX<T> = c ...
- vs2010中的反编译
有这样的需求,一个.dll文件,如何查看里面的代码呢?网上有很多关于反编译的运用的. http://blog.csdn.net/lyflcear/article/details/8102057 昨天( ...
- 【js】js 让图片旋转
转http://www.cnblogs.com/ustcyc/p/3760116.html 核心: canvas.style.filter = "progid:DXImageTransfo ...