Entity Framework中实现查询的几种方法
在介绍几种方法前,献上一张图,希望图的作者不要追究我的盗图之过。本文的内容是我自学时的笔记,自学的内容来自网络。手打的代码,切不可直接复制过去用,会有好多错别字什么的。

- Entity SQL
类似于SQL语句,
SELECT VALUE c FROM Entities.Contacts
VALUE关键字表示返回的是一个对象,原文是return an object,not a row. Used when only a single item is selected.
Entities.Contacts就是一个EDM(Entity Data Model)
- LINQ to Entities
LINQ to Entities 可以看做是LINQ to Object的一个变种,通过LINQ来查询ADO.NET来查询EDM,在底层使用Object Services来完成其功能。
Object Services:是一组用于查询实体数据模型的类,它可以将这些查询结果转化为强类型的CLR对象。Object Services也可以执行EntitySQL命令。
通过EntitySQK=l调用Object Services示例
var queryString="SELECT VALUE c FROM Entitis.Contacts AS c WHERE c.Name='XV'";
ObjectQuery<Contact> contacts=context.CreateQuery<Contact>(queryString);
- Entity Client
从本文开头的图中,很容易就可以知道不管是使用EntitySQL还是LINQ to Entities,最后都要以来EntityClient来完成其工作。当然,也可以直接使用EntityClient,
通过 EntitySQL,性能较高,但要手动跟踪数据的修改情况。所以,只有当1.需要较高的性能2.以只读方式访问数据时,才考虑使用直接用EntitySQL调用ENtityClient。
Entity Client不会返回实体对象,它返回的是一组对象模型,如EntityConnection等,类似于ADO.NET提供的对象模型。
- 直接执行SQL语句
当底层数据库是关系数据库时,EF可以直接向其发送SQL命令。
- 使用“扩展的”查询方法
在实际的开发中,也经常使用扩展的方法+lambda表达式以级联的方式完成查询工作,如:
var contacts=context.Contacts.Where(c=> c.Name=="XV").OrderBy((foo)=>foo.FirstName);
事实上,LINQ to Entities查询最终也是转化为扩展方法+lambdas再执行的
Entity Framework中实现查询的几种方法的更多相关文章
- Entity framework 中Where、First、Count等查询函数使用时要注意
在.Net开发中,Entity framework是微软ORM架构的最佳官方工具.我们可以使用Lambda表达式在Entity framework中DbSet<T>类上直接做查询(比如使用 ...
- Entity Framework中的几种加载方式
在Entity Framework中有三种加载的方式,分别是延迟加载,自动加载和显示加载.下面用一个例子来说明:现在有两个表,一个是资料表(Reference),另外一个表是资料分类表 ...
- Entity Framework 教程——Entity Framework中的实体类型
Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...
- 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明
一.首先了解下Entity Framework 自动关联查询: Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载) ...
- 在Entity Framework 中实现继承关系映射到数据库表
继承关系映射到数据库表中有多种方式: 第一种:TPH(table-per-hiaerachy) 每一层次一张表 (只有一张表) 仅使用名为父类的类型名的一张表,它包含了各个子类的所有属性信息,使用区分 ...
- 关于Entity Framework中的Attached报错相关解决方案的总结
关于Entity Framework中的Attached报错的问题,我这里分为以下几种类型,每种类型我都给出相应的解决方案,希望能给大家带来一些的帮助,当然作为读者的您如果觉得有不同的意见或更好的方法 ...
- 关于Entity Framework中的Attached报错的完美解决方案终极版
之前发表过一篇文章题为<关于Entity Framework中的Attached报错的完美解决方案>,那篇文章确实能解决单个实体在进行更新.删除时Attached的报错,注意我这里说的单个 ...
- [转]在Entity Framework中使用LINQ语句分页
本文转自:http://diaosbook.com/Post/2012/9/21/linq-paging-in-entity-framework 我们知道,内存分页效率很低.并且,如果是WebForm ...
- LinqToSql和ASP.NET Entity FrameWork 中使用事务
ASP.NET Entity FrameWork中: int flag = -1; if (this.URPmanagementEntities1.Connection.State != System ...
随机推荐
- ListView小坑
ListView的addHeaderView()和addFooterView()方法需要“Call this before calling setAdapter”,否则崩溃. 但是在KITKAT(ap ...
- String StringBuffer StringBuilder (转)
转自:http://www.iteye.com/topic/522167 众所周知,String是由字符组成的串,在程序中使用频率很高.Java中的String是一个类,而并非基本数据类型. 不过她却 ...
- C++11 lambda表达式学习
lambda表达式是函数式编程的基础.咱对于函数式编程也没有足够的理解,因此这里不敢胡言乱语,有兴趣的可以自己查找相关资料看下.这里只是介绍C++11中的lambda表达式自己的认识.这里有参考文档h ...
- 最小日志量的insert操作
--1.实验环境 SQL> conn scott/tiger Connected to Oracle Database 11g Enterprise Edition Release 11.2.0 ...
- gulp编译less简单demo
写个简单的less.watch任务的demo分享———— 1.准备: 安装全局node.npm,这个教程很多不作详细介绍: 安装全局gulp npm install -g gulp 新建getstar ...
- 一个很好的幻灯片效果的jquery插件--kinMaxShow
在做一些网站时,或多或少的要给网站做幻灯片效果,以前每次做这个效果,都是现成带网上找,找到的很多很杂,而且用完后就不会再理会更加不会去总结代码. 无意中找到了kinMaxShow这个插件,机会满足了我 ...
- httpcomponents-client-4.3.6 HttpPost的简单使用
/** * httpcomponents-client-4.3.6 * @author y */ public class HttpUtil { public static String httpPo ...
- Android Development Tools 发生checkAndLoadTargetData错误
之前使用时没有出现任何问题的,我把D:\IDE\ADT\adt-bundle-windows-x86_64-20140321\eclipse目录下面的 eclipse.exe重名名为adt.exe并设 ...
- 下一代云计算模式:Docker正掀起个性化商业革命
作者: 吴宁川 来源: ITValue 发布时间: 2015-09-20 10:41 阅读: 10008 次 推荐: 16 原文链接 [收藏] 文/ITValue 记者吴宁川 从 20 ...
- 字符串转换为float<1>
zjtest7-frontend:/usr/local/logstash-2.3.4/config# cat g01.conf input {stdin{}} filter { grok { matc ...