介绍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語法控制 一般 較好 最好
支援的函式 一般
開發速度 最佳 一般 一般

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

时间: 2024-10-24 20:15:53

介绍EF提供的3中查询方式的相关文章

hibernate(七) hibernate中查询方式详解

序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等,如果不明白,可以先去看一下 MySQL数据表查询操作详解  ,以至于看这篇文章不用那么吃力. --WH 一.hibernate中的5种检索方式 1.1.导航对象图检索方式 根据已经加载的对象导航到其他对象 例如:在前面的各种映射关系中,实体类包含对其他类对象的引用. Dept d = (Dept) session.get(Dept.cla

Hibernate学习(七)———— hibernate中查询方式详解

序言 之前对hibernate中的查询总是搞混淆,不明白里面具体有哪些东西.就是因为缺少总结.在看这篇文章之前,你应该知道的是数据库的一些查询操作,多表查询等 --WH 一.hibernate中的5种检索方式 1.1.导航对象图检索方式 根据已经加载的对象导航到其他对象 例如:在前面的各种映射关系中,实体类包含对其他类对象的引用. Dept d = (Dept) session.get(Dept.class,2); d.getStaffSet().size(); //d对象关联Staff集合,h

3、Hibenrate中HQL的10中查询方式

二.具体事例如下: 2.0 编写如下sql语句 1 create table teacher(tid number not null primary key,tname varchar2(20)); 2 create sequence seq_teacher; 3 insert into teacher values(seq_teacher.nextval,'holly'); 4 insert into teacher values(seq_teacher.nextval,'石头'); 5 co

NHibernate应用四:NHibernate的查询方式介绍

NHibernate中提供了三种查询方式:NHibernate 查询语言(HQL,NHibernate Query Language).条件查询(Criteria API,Query By Example(QBE)是Criteria API 的一种特殊情况).原生SQL(Literal SQL,T-SQL.PL/SQL). 2009年,微软发布NHibernate.Linq 1.0 后,NHibernate能通过该DLL支持LINQ.

python-django-ORM,常用查询方式

介绍django model 的一些常用查询方式 首先是一些文档性的帮助 __exact 精确等于 like ‘aaa’ __iexact 精确等于 忽略大小写 ilike ‘aaa’ __contains 包含 like ‘%aaa%’ __icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains. __gt 大于 __gte 大于等于 __lt 小于 __lte 小于等于 __in 存在于一个list范围内

es中的分片查询方式

Es查询的时候默认是随机从一些分片中查询数据,可以通过配置让es从某些分片中查询数据 1:_local 指查询操作会优先在本地节点有的分片中查询,没有的话再在其它节点查询. 2:_primary:指查询只在主分片中查询 3:_primary_first:指查询会先在主分片中查询,如果主分片找不到(挂了),就会在副本中查询. 4:_only_node:指在指定id的节点里面进行查询,如果该节点只有要查询索引的部分分片,就只在这部分分片中查找,所以查询结果可能不完整.如_only_node:123在

linq to ef(相当于sql中in的用法)查询语句

select * from DoctorInfo doctor where doctor.HosDepartId in (select Id from HospitalDepartment hd where hd.DepartmentId=5) var a=from d in _entity.HospitalDepartment where d.DepartmentId==5 select d; List<int> lst=new List<int>();foreach(var b

shiro中CacheManager相关的类结构介绍,提供redis Cache实现

cacheManager主要用于对shiro中的session.realm中的认证信息.授权信息进行缓存. 1.类结构 2.接口及类介绍 CacheManager 提供根据名字获取cache的作用. AbstractCacheManager 本地提供并发map做缓存.提供抽象类给子类继承,子类只需要创建cache即可. MemoryConstrainedCacheManager 实现上面的抽象类.创建一个map作为缓存. 3.Cache相关介绍 Cache接口 主要提供缓存相关的增删改查方法.

Hibernate 提供的查询方式

OID查询方式(o指的是object) 通过get()和load()方法加载指定OID的对象 save()添加 update()更新 delete()删除 HQL查询方式(面向对象的查询语言) 实体更新和实体删除都是调用的executeUpdate()方法. 通过QUERy接口使用HQL语言进行查询 QBC查询方式 通过Criteria等接口和类进行查询: 本地SQl查询方式 使用原生SQL语言进行查询 对象导航查询方式 通过已经加载的对象,导航到其关联对象