EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
目录
5.4.1 查询符合条件的单条记录
EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录。
5.4.2 Entity Framework中的内部数据缓存
DbSet.Local属性所引用的数据集合,缓存了从数据库中提取的数据,同时包容了用户对这些数据所做的修改。本讲视频介绍了访问这一数据缓存的基本编程技巧和注意事项。并且对如何提升数据库应用程序的性能提了一些建议:使用MemCache等第三方缓存系统,直接发送SQL命令到数据库,或者使用ADO.NET绕开EF直接访问数据库。
5.4.3 再谈异步查询
介绍一些使用Entity Framework查询数据的实用编程技巧。
5.4.1 《查询符合条件的单条记录》 时长:8分40秒 难度:易
EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录。
var client = (from c in context.UPMS_User
where c.UserId ==
select c).SingleOrDefault();
//Find方法会先在内存中找,找不到之后再到数据库提取
//注意:Find方法的参数是主键字段的某个值
var client = context.UPMS_User.Find();

5.4.2 《Entity Framework中的内部数据缓存》 时长:11分12秒 难度:中
DbSet.Local属性所引用的数据集合,缓存了从数据库中提取的数据,同时包容了用户对这些数据所做的修改。本讲视频介绍了访问这一数据缓存的基本编程技巧和注意事项。并且对如何提升数据库应用程序的性能提了一些建议:使用MemCache等第三方缓存系统,直接发送SQL命令到数据库,或者使用ADO.NET绕开EF直接访问数据库。
1.查询数据

2. 执行Local
static void UseLocalCache()
{
using (UPMSEntities dbc = new UPMSEntities())
{
var lq = from d in dbc.UPMS_User.Where(p => p.UserId < )
select d; foreach (var item in lq)
{
Console.WriteLine(item.UserId + "," + item.RealName);
}
//访问Local绝对不会向服务器发送SQL
Console.WriteLine("共有{0}条记录\n\r",dbc.UPMS_User.Local.Count());
}
}
3.完整的代码示例
static void UseLocalCache()
{
using (UPMSEntities dbc = new UPMSEntities())
{
var lq = from d in dbc.UPMS_User.Where(p => p.UserId < )
select d; foreach (var item in lq)
{
Console.WriteLine(item.UserId + "," + item.RealName);
}
//访问Local绝对不会向服务器发送SQL
Console.WriteLine("共有{0}条记录\n\r",dbc.UPMS_User.Local.Count()); //针对本地数据的查询,不会访问数据库
var c = dbc.UPMS_User.Local.FirstOrDefault(p => p.UserId == );
Console.WriteLine("\n在本地查找UserId == 9的记录,可找到");
ShowIn(c); c = dbc.UPMS_User.Local.FirstOrDefault(p => p.UserId == );
Console.WriteLine("\n在本地查找UserId == 11的记录,找不到");
ShowIn(c); UPMS_User newuser = new UPMS_User(){
UserId = ,
RealName="aaaaaa"
}; dbc.UPMS_User.Add(newuser);
//现在再找就找到了,但数据库中的记录不是这样的
c = dbc.UPMS_User.Local.FirstOrDefault(p => p.UserId == );
Console.WriteLine("\n本地缓存中的数据为:");
ShowIn(c);
Console.WriteLine("\n数据中原始数据为:"); c = dbc.UPMS_User.SingleOrDefault(p => p.UserId == );
ShowIn(c);
}
} static void ShowIn(UPMS_User user)
{
if (user==null)
{
Console.WriteLine("User为Null");
}
else
{
Console.WriteLine("Userid为:{0},RealName为:{1}...", user.UserId, user.RealName);
} }


context.Database
.ExecuteSqlCommand("delete from Client where ClientID={0}", ClientID);
这种方法不能滥用。免得与底层数据绑定得过于紧密。
如果比较复杂,建议直接使用ADO.NET。
5.4.3 《再谈异步查询》 时长:3分50秒 难度:易
EF6以上可以使用异步方法,介绍更多的异步查询知识,以帮助大家在实际开发中用好异步查询。
附件中包容本讲源代码及示例数据库MyDb(SQL Server 2012格式,请自行使用SQL Server Management Studio(SSME)附加,注意附加前在资源管理器中为mdf和ldf为“Authenticated User”设置"完全控制“权限,否则,SSME会附加失败)。此示例数据库在后面被一直使用。
static async System.Threading.Tasks.Task ShowClientAsync()
{
using (var context =new UPMSEntities())
{
Console.WriteLine("ShowClientAsync():正在提取数据中,,,");
var query = from client in context.UPMS_User
select client;
var clients = await query.ToListAsync(); Console.WriteLine("\n数据提取完毕,显示如下:");
foreach (var item in clients)
{
Console.WriteLine("{0},{1}",item.UserId,item.RealName);
}
Console.WriteLine("\n数据显示完毕,共育{0}条数据:",clients.Count());
}
}
EF – 2.EF数据查询基础(上)查询数据的实用编程技巧的更多相关文章
- EF – 2.EF数据查询基础(上)查询数据的实用编程技巧
目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...
- mysql 再查询结果的基础上查询(子查询)
SELECT A.wx_name, A.wx_litpic, B . * FROM ( SELECT uid, COUNT( * ) AS daticishu FROM statements , ) ...
- (25)ASP.NET Core EF查询(复杂查询运算符、原生SQL查询、异步查询)
1.复杂查询运算符 在生产场景中,我们经常用到LINQ运算符进行查询获取数据,现在我们就来了解下生产场景经常出现几种复杂查询运算符. 1.1联接(INNER JOIN) 借助LINQ Join运算符, ...
- SQL语句or查询,union all查询,分页查询,分组,AND查询
一.OR查询 1.在AND多个筛选条件和一个or条件时,如果没有括号包裹,or会就近原则包裹之后的所有and条件,也就是同级的多个and条件只能对,or条件的一边起作用 2.如果or条件两边的筛选条件 ...
- (在模仿中精进数据可视化03)OD数据的特殊可视化方式
本文完整代码已上传至我的Github仓库https://github.com/CNFeffery/FefferyViz 1 简介 OD数据是交通.城市规划以及GIS等领域常见的一类数据,特点是每一条数 ...
- HDFS源码分析数据块汇报之损坏数据块检测checkReplicaCorrupt()
无论是第一次,还是之后的每次数据块汇报,名字名字节点都会对汇报上来的数据块进行检测,看看其是否为损坏的数据块.那么,损坏数据块是如何被检测的呢?本文,我们将研究下损坏数据块检测的checkReplic ...
- ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 使用 EF 框架查询数据 上一章节我们学习了如何设置 ...
- EF Core 中多次从数据库查询实体数据,DbContext跟踪实体的情况
使用EF Core时,如果多次从数据库中查询一个表的同一行数据,DbContext中跟踪(track)的实体到底有几个呢?我们下面就分情况讨论下. 数据库 首先我们的数据库中有一个Person表,其建 ...
- EF 查询视图出现重复数据
解决方案: 由多张表组成的视图,要加实体键.而且实体键组合要能确保唯一性. 个人理解:确保唯一性,一个或多个实体键,实现了复合主键或组合主键的效果. 这样查询是,延迟加载机制,才知道哪些需要重新从数据 ...
随机推荐
- Spring切面之一
为什么要使用AOP,在编写程序的时候,除了不必关心依赖的组件如何实现,在实际开发过程中,还需要将程序中涉及的公共问题集中解决.AOP是Aspect-Oriented Programming的简称,意思 ...
- jq从数组中删除指定元素(根据自定义条件) 超好用的 $.grep() 方法
转: jQuery.grep() 什么是jQuery.grep()? jQuery.grep()是一个查找满足过滤函数的数组元素的函数.原始数组不受影响,返回值为数组. 用法介绍: 写法: jQuer ...
- 回顾static与final的作用
static是java中非常重要的一个关键字,而且它的用法也很丰富,主要有四种用法: 用来修饰成员变量,将其变为类的成员,从而实现所有对象对于该成员的共享: 用来修饰成员方法,将其变为类方法,可以直接 ...
- 题解【bzoj2440 [中山市选2011]完全平方数】
Description 求第 \(k\) 个不含平方因子的正整数.多组询问.\(k \leq 10^9, T \leq 50\) Solution 网上的题解几乎都是容斥,这里给一个简单的也挺快的做法 ...
- python requests https 访问出错
错误提示: /usr/local/lib/python2.7/site-packages/requests/packages/urllib3/util/ssl_.py:100: InsecurePla ...
- AJAX 状态值与状态码详解
1- AJAX状态值与状态码区别 AJAX状态值是指,运行AJAX所经历过的几种状态,无论访问是否成功都将响应的步骤,可以理解成为AJAX运行步骤.如:正在发送,正在响应等,由AJAX对象与服务器交互 ...
- 部署维护docker环境
其实前面已经用salt,安装部署了docker应用环境了,过程中还是遇到了不少问题,所以这里再相对仔细的记录一下,docker手机安装过程应注意的事情 安装过程部分参考了刘天斯大师文档部署 1,安装环 ...
- 谨慎重载clone方法
本文涉及到的概念 1.浅拷贝和深拷贝 2..clone方法的作用和使用方式 3.拷贝构造器和拷贝工厂 1.浅拷贝和深拷贝 浅拷贝 一个类实现Cloneable接口,然后,该类的实例调用clone方 ...
- 47、Python面向对象中的继承有什么特点?
继承的优点: 1.建造系统中的类,避免重复操作. 2.新类经常是基于已经存在的类,这样就可以提升代码的复用程度. 继承的特点: 1.在继承中基类的构造(__init__()方法)不会被自动调用,它需要 ...
- Attention-over-Attention Neural Networks for Reading Comprehension论文总结
Attention-over-Attention Neural Networks for Reading Comprehension 论文地址:https://arxiv.org/pdf/1607.0 ...