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 ...
随机推荐
- C#中public、private、protected、internal、protected internal (转载)
在C#语言中,共有五种访问修饰符:public.private.protected.internal.protected internal.作用范围如下表:访问修饰符 说明public 公有访问.不受 ...
- Code First 数据注释--DatabaseGenerated
EF中可以使用DatabaseGenerated设置数据库字段的属性,它有三个枚举值:Computed.None.Identity Computed 表示这一列是计算所得 None 不做处理 Iden ...
- Linux基础知识笔记
1.case的命令格式 #!/bin/sh echo "please input number 1 to 3" read number case $number in ) e ...
- Js弹性漂浮广告代码
<html><head><meta http-equiv="Content-Type" content="text/html; charse ...
- android Log.isLoggable步骤的使用
原文地址: http://www.cnblogs.com/maxinliang/p/4024442.html android Log.isLoggable方法的使用 android 动态控制logca ...
- weblogic开机启动-超简单
1.编写weblogic启动脚本,命名为start_weblogic_server.sh,内容如下: #!/bin/bashnohup /home/weblogic/Oracle/Middlewar ...
- PAT 64.Complete Binary Search Tree
题目链接: http://pat.zju.edu.cn/contests/pat-a-practise/1064 思路分析: 1)先对数组排好序. 2)采用中序遍历的方式,将排好序的元素逐个插入在完全 ...
- CSS3学习之圆角box-shadow,阴影border-radius
最近经常玩腾讯微博,出来职业习惯,看看它的CSS,里面运用了大量的css3的东东,有一处用到了Data URI,还有css expression有争议的地方,对png24图片的处理也是用滤镜,类似( ...
- block(三)揭开神秘面纱(上)
block到底是什么 我们使用clang的rewrite-objc命令来获取转码后的代码. 1.block的底层实现 我们来看看最简单的一个block: [caption id="attac ...
- iPhone 和Android应用,特殊的链接:打电话,短信,email;
http://ice-k.iteye.com/blog/1426526 下面的这篇文章主要是说,网页中的链接如何写,可以激活电话的功能. 例如,页面中展示的是一个电话号码,当用户在手机浏览器里面点击这 ...