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

  • 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中实现查询的几种方法的更多相关文章

  1. Entity framework 中Where、First、Count等查询函数使用时要注意

    在.Net开发中,Entity framework是微软ORM架构的最佳官方工具.我们可以使用Lambda表达式在Entity framework中DbSet<T>类上直接做查询(比如使用 ...

  2. Entity Framework中的几种加载方式

            在Entity Framework中有三种加载的方式,分别是延迟加载,自动加载和显示加载.下面用一个例子来说明:现在有两个表,一个是资料表(Reference),另外一个表是资料分类表 ...

  3. Entity Framework 教程——Entity Framework中的实体类型

    Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...

  4. 关于Entity Framework自动关联查询与自动关联更新导航属性对应的实体注意事项说明

    一.首先了解下Entity Framework 自动关联查询: Entity Framework 自动关联查询,有三种方法:Lazy Loading(延迟加载),Eager Loading(预先加载) ...

  5. 在Entity Framework 中实现继承关系映射到数据库表

    继承关系映射到数据库表中有多种方式: 第一种:TPH(table-per-hiaerachy) 每一层次一张表 (只有一张表) 仅使用名为父类的类型名的一张表,它包含了各个子类的所有属性信息,使用区分 ...

  6. 关于Entity Framework中的Attached报错相关解决方案的总结

    关于Entity Framework中的Attached报错的问题,我这里分为以下几种类型,每种类型我都给出相应的解决方案,希望能给大家带来一些的帮助,当然作为读者的您如果觉得有不同的意见或更好的方法 ...

  7. 关于Entity Framework中的Attached报错的完美解决方案终极版

    之前发表过一篇文章题为<关于Entity Framework中的Attached报错的完美解决方案>,那篇文章确实能解决单个实体在进行更新.删除时Attached的报错,注意我这里说的单个 ...

  8. [转]在Entity Framework中使用LINQ语句分页

    本文转自:http://diaosbook.com/Post/2012/9/21/linq-paging-in-entity-framework 我们知道,内存分页效率很低.并且,如果是WebForm ...

  9. LinqToSql和ASP.NET Entity FrameWork 中使用事务

    ASP.NET Entity FrameWork中: int flag = -1; if (this.URPmanagementEntities1.Connection.State != System ...

随机推荐

  1. (转)android客户端从服务器端获取json数据并解析的实现代码

    今天总结一下android客户端从服务器端获取json数据的实现代码,需要的朋友可以参考下       首先客户端从服务器端获取json数据 1.利用HttpUrlConnection   复制代码 ...

  2. 7 RandomAccessFile读取文件内容保存--简单例子(需要验证)

    import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; /** * 读取动态产生的文件内容 */ publ ...

  3. BZOJ 1003 物流运输 (动态规划 SPFA 最短路)

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5590 Solved: 2293 [Submit][Stat ...

  4. Spring技术_邮箱注册_激活_获取验证码

    项目结构 项目中用到的sql: create database hrSystem; use hrSystem; CREATE TABLE `emailverificationcode` ( `id` ...

  5. PHP连接Microsoft SQL Server 2005/2008

    PHP自带的MSSQL扩展php_mssql.dll原来是给SQL Server 2000用的,难怪连接不上2008?! -_-!!要使用SQL Server 2005以上版本,就要用到微软为PHP提 ...

  6. oracle RAC调整数据文件大小并移动表到指定的表空间

    一.Oracle RAC 调整表空间数据文件大小 1.先查找出表空间对应的数据文件路径: select file_name,tablespace_name from dba_data_files ; ...

  7. 将HTML格式的String转化为HTMLElement

    代码如下: <meta charset="UTF-8"> <title>Insert title here</title> </head& ...

  8. JavaScript高级程序设计第14章表单脚本 (学习笔记)

    第十四章 表单脚本 1.阻止默认表单提交 1.提交表单数据 1.使用type=submit提交按钮 2.使用submit():方法 注意:当用户点击提交按钮时,会触发submit事件,从而在这里我们有 ...

  9. uva201 Squares

     Squares  A children's board game consists of a square array of dots that contains lines connecting ...

  10. Scala学习笔记--集合类型Queue,Set

    补充知识:http://www.importnew.com/4543.html 正文开始 scala.collection.immutable scala.collection.mutable 队列Q ...