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 查询视图出现重复数据
解决方案: 由多张表组成的视图,要加实体键.而且实体键组合要能确保唯一性. 个人理解:确保唯一性,一个或多个实体键,实现了复合主键或组合主键的效果. 这样查询是,延迟加载机制,才知道哪些需要重新从数据 ...
随机推荐
- 忧桑三角形,调了半天,真忧桑TAT
忧桑三角形 试题描述 小J是一名文化课选手,他十分喜欢做题,尤其是裸题.有一棵树,树上每个点都有点权,现在有以下两个操作: 1. 修改某个点的点权 2. 查询点u和点v构成的简单路径上是否能选出三个点 ...
- word20161203
B-channel / B 信道 B-ISDN, broadband integrated services digital network / 广播综合业务数字网络 backbone router ...
- Linux搭建一个FTP服务器
1.安装vsftp 2.配置vsftpd.conf, vim /etc/vsftpd.conf 下面说说里面比较重要的选项 1 anonymous_enable=NO #不允许匿名用户 2 3 loc ...
- Qt5 程序启动画面动图效果
2333终于实现动图,先弄了一个窗口去掉标题栏假装就是启动画面了,还是那只萌萌的猫这次会动了! 基类用的是QWidget 类名称MainView #ifndef MAINVIEW_H #define ...
- BZOJ 4579: [Usaco2016 Open]Closing the Farm
Description 依次删去一个点和它的边,问当前图是否连通. Sol 并查集. 倒着做就可以了. 每次将一个点及其的边加入,如果当前集合个数大于 1,那么就不连通. Code /******** ...
- PHP5.4开启zend opcache缓存
PHP5.5整合了zend opcache,但是5.4以下的需要自己安装. 介绍一下开启opcache方法,环境为wamp(php5.4.16) 下载dll文件 把php_opcache.dll放进p ...
- innerHtml innerText textContent兼容性问题
innerHtml,innerText,textContentinnerHtml获取元素带标签的内容:innerText只获取元素的文本:火狐不支持innerText,支持textContent: / ...
- PHP--获取响应头(Response Header)方法
方法一: $baiduUrl = "http://www.baidu.com/link"; file_get_contents($baiduUrl); $responseInf ...
- git 忽略文件权限
git config --add core.filemode false 发现.git/config 中新增了一行: [core] ... filemode = false ref: http://b ...
- 浅析mongoEngine的document对象
引言: from mongoengine import * connect('local')class Test(Document): name=StringField(max_length=32) ...