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 查询视图出现重复数据
解决方案: 由多张表组成的视图,要加实体键.而且实体键组合要能确保唯一性. 个人理解:确保唯一性,一个或多个实体键,实现了复合主键或组合主键的效果. 这样查询是,延迟加载机制,才知道哪些需要重新从数据 ...
随机推荐
- Android学习笔记(十四)——自定义广播
//此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 我们除了可以通过广播接收器来接收系统广播, 还可以在应用程序中发送自定义的广播.下面我们来分别试一试发送自定义 ...
- mysql日期加减<转>
1. MySQL 为日期增加一个时间间隔:date_add() set @dt = now(); select date_add(@dt, interval 1 day); - 加1天 select ...
- MySQL 中根据A表的ID查询B表数据
例1:查询某个文章及其对应的评论(单个详情) ) FROM A; 例2:查询分类表中,每种分类各包含多少商品(汇总) SELECT category_id, (SELECT count(goods_i ...
- CentOS 6.4 搭建git 服务器
CentOS 6.4 搭建git 服务器 (2013-11-22 19:04:09)转载▼ 标签: it 分类: Linux 此文件是依据markdown所编写,更好效果参见本人github的文档ht ...
- 【GoLang】GoLang 错误处理 -- 使用 error is value 的思路处理,检查并处理error
吐血推荐: https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully 参考资料: https:/ ...
- 文件上传(js, C#)
ajaxFileUpload http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html
- Group Anagrams
Given an array of strings, group anagrams together. For example, given: ["eat", "tea& ...
- codecademy-command line-inputoutput
What happens when you type this command? $ echo "Hello" Hello The echo command accepts the ...
- git命令使用
2015-07-15 11:59:11 git pull : 相当于 SVN up git status : 相当于 SVN st git add a.txt: 新添加文件 或者 将文件修改保存到索引 ...
- solr单机环境配置并包含外部单机zookeeper
首先和之前一样下载solr-5.3.1.tgz,然后执行下面命令释放文件并放置在/usr/目录下: $ .tgz $ /usr/ $ cd /usr/solr- 这个时候先不用启动solr,因为单机模 ...