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 ...
随机推荐
- POD数据了解
Plain old data (普通旧的数据); POD 是Plain Old Data的簡寫,是指一些系統的int, char, float.指標.array之類的資料型別,這應該蠻好想像的,就是C ...
- 修改ubuntu按下关机键触发的事件
gsettings set org.gnome.settings-daemon.plugins.power button-power shutdown will change your the beh ...
- 使用inotify检测linux目录内文件变化
#include <unistd.h> #include <sys/inotify.h> #include <stdio.h> #include <error ...
- php关联不上mysql解决办法
## php无法关联mysql php关联不上mysql解决办法: 尝试N多方法,需要的dll文件都复制了,依旧是不断提示: Fatal error: Call to undefined fun ...
- 修改Win7远程桌面端口
Win7与XP不同,在开启远程桌面修改端口后是无法直接访问的,原因是还未修改远程桌面在防火墙入站规则中的端口号. 修改远程桌面端口: [HKEY_LOCAL_MACHINE/SYSTEM/Curren ...
- mysql删除、修改字段默认值
alter table表名alter column字段名drop default; (若本身存在默认值,则先删除) alter table 表名 alter column 字段名 set defaul ...
- 【转】Web标准中的常见问题
本文转自http://www.tracefact.net/Misc/Common-Problems-Of-Web-Standard.aspx 引言 大概在2004年的时候,Web标准的概念藉由一本名为 ...
- JS对Json对象Distinct
Json对象去重 今日有一个需求如下: 从数据库中取出数据源转化成json字符串绑定到隐藏域中,取出的json字符串如下: string data="[{"CompanyName& ...
- 【转载】MySQL被慢sql hang住了,用shell脚本快速清除不断增长的慢sql的办法
原文地址:MySQL被慢sql hang住了,用shell脚本快速清除不断增长的慢sql的办法 作者:mchdba 某个初级dba误删index,mysql漫山遍野全是10S以上的慢sql,mysql ...
- sqlldr使用
一.写ctl文件 首先,先写一个ctl文件(包含控件信息的文件,这里是oracle数据库的控制文件)文件名:测试.ctl ctl文件例: load datainfile 'd:\xxx.cvs'tru ...