Entity Framework支持的查询方式有三种

  • LINQ to Entities
  • Entity SQL
  • Native SQL

【LINQ to Entities】
LINQ(语言集成查询)是从Visual Studio 2008开始引入的功能,在C#中可以使用LINQ查询不同的数据源。LINQ-to-Entities在entity framework上的操作,可以访问底层数据库中 的数据。以下是LINQ查询语法示例:

 public course FindWith(int id)
{
using (var context = new SchoolSchemaEntities())
{
//使用LINQ方法查询
return context.courses.FirstOrDefault(w => w.CourseId == id);
}
}
public course FindWith(int id)
{
using (var context = new SchoolSchemaEntities())
{
//使用LINQ语法查询
var query = from c in context.courses
where c.CourseId == id
select c;
return query.FirstOrDefault<course>();
}
}

【Entity SQL】
我们需要通过ObjectContext 来创建Entity SQL查询,它是由实体框架的对象服务直接处理的。它返回ObjectQuery而不是IQueryable。

 public course FindWith(int id)
{
using (var context = new SchoolSchemaEntities())
{
string sqlstring = "SELECT VALUE sc FROM SchoolSchemaEntities.courses as sc WHERE sc.CourseId ==" + id;
var objectContext = (context as IObjectContextAdapter).ObjectContext;
return objectContext.CreateQuery<course>(sqlstring).FirstOrDefault<course>();
}
}

Entity SQL相关参考:https://msdn.microsoft.com/zh-cn/library/bb399560.aspx

【Native SQL】
你可以使用本地SQL查询关系型数据库,就像下面这样

 public course FindWith(int id)
{
using (var context = new SchoolSchemaEntities())
{
return context.courses.SqlQuery("SELECT * FROM school_schema.course WHERE CourseId=" + id)
.FirstOrDefault<course>();
}
}

出处:http://www.entityframeworktutorial.net/Querying-with-EDM.aspx

Entity Framework常用的查询方式的更多相关文章

  1. Entity Framework入门教程: Entity Framework支持的查询方式

    Entity Framework支持的查询方式有三种 LINQ to Entities Entity SQL Native SQL [LINQ to Entities] LINQ(语言集成查询)是从V ...

  2. Entity Framework后台采用分页方式取数据与AspNetPager控件的使用

    本文是一个对AspNetPager控件使用的笔记! 有关AspNetPager控件可以查看杨涛主页.这是一个开放的自定义ASP.NET控件,支持各种自定义的数据分页方式,使用很方便,而且功能也很强大, ...

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

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

  4. Entity Framework CodeFirst------使用CodeFirst方式建立数据库连接(一)

    本文分步演练介绍通过 Code First 开发建立新数据库.这个方案包括建立不存在的数据库(Code First 创建)或者空数据库(Code First 向它添加新表).借助 Code First ...

  5. Entity Framework Core Like 查询揭秘

    在Entity Framework Core 2.0中增加一个很酷的功能:EF.Functions.Like(),最终解析为SQL中的Like语句,以便于在 LINQ 查询中直接调用. 不过Entit ...

  6. Entity Framework做IN查询

    开发中遇到的Too high level of nesting for select错误 项目使用了Entity Framework结合Mysql, 遇到了一个非常奇怪的性能问题,一个看起来非常简单的 ...

  7. IBatis.Net学习笔记五--常用的查询方式

    在项目开发过程中,查询占了很大的一个比重,一个框架的好坏也很多程度上取决于查询的灵活性和效率.在IBatis.Net中提供了方便的数据库查询方式. 在Dao代码部分主要有两种方式:1.查询结果为一个对 ...

  8. [EF] 如何在 Entity Framework 中以手动方式设定 Code First 的 Migration 作业

    Entity Framework (简称 EF) 发展到现在, 版本已经进入 6.1.0, 距离我写的「在 VS2013 以 Code First 方式建立 EF 资料库」这篇文章已有半年的时间.如果 ...

  9. Entity Framework之DB First方式

    EF(Entity Framework的简称,下同)有三种方式,分别是:DataBase First. Model First和Code First. 下面是Db First的方式: 1. 数据库库中 ...

随机推荐

  1. Java进阶资料汇总

    Java经过将近20年的发展壮大,框架体系已经丰满俱全:从前端到后台到数据库,从智能终端到大数据都能看到Java的身影,个人感觉做后台进要求越来越高,越来越难. 为什么现在Java程序员越来越难做,一 ...

  2. python-day32--进程--->socker并发

    一.进程背景 1.进程即正在执行的一个过程.进程是对正在运行程序的一个抽象. 2.进程的概念起源于操作系统,是操作系统最核心的概念,也是操作系统提供的最古老也是最重要的抽象概念之一.操作系统的其他所有 ...

  3. win7下安装node及出现的npm问题

    按照官网下载安装,选择 Windows Installer (.msi):,一直next安装,默认安装在C:\Program Files\nodejs下,环境变量会自动添加 如果安装后,打开cmd输入 ...

  4. BZOJ1670 [Usaco2006 Oct]Building the Moat护城河的挖掘

    裸的凸包...(和旋转卡壳有什么关系吗...蒟蒻求教T T) 话说忘了怎么写了...(我以前都是先做上凸壳再做下凸壳的说) 于是看了下hzwer的写法,用了向量的点积,方便多了,于是果断学习(Orz) ...

  5. PHP:第一章——PHP中的关键字

    <?php //PHP关键词 /* and //php中的逻辑与运算符.(和) or //php中的逻辑或运算符.(或) xor //php中的逻辑异或.(异或) __FILE__ //php中 ...

  6. ReentrantReadWriteLock——读读共享(一)

    多个线程可以同时读,读读是异步的.非互斥的 1.Service.java(封装的方法,供线程A和B访问) package ReentrantReadWriteLock; import java.uti ...

  7. Maven Spring BOM (bill of materials)

    为了防止用Maven管理Spring项目时,不同的项目依赖了不同版本的Spring,可以使用Maven BOM来解决者一问题. 在依赖管理时,引入spring-framework-bom,如: < ...

  8. MyEclipse移动开发教程:设置所需配置的iOS应用(二)

    MyEclipse个人授权 折扣低至冰点!立即开抢>> [MyEclipse最新版下载] 二.创建一个数字证书和私钥 2.2 生成证书签名请求和私钥文件 第一步是使用数字签名实用程序创建证 ...

  9. html头标签meta实现refresh重定向

    <html> <head> <meta http-equiv="content-type" content="text/html; char ...

  10. ESET Smart Security 免费60天

    领取地址:http://goo.gl/aEl2Xy 兑换地址:http://goo.gl/h1n62K