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 查询视图出现重复数据
解决方案: 由多张表组成的视图,要加实体键.而且实体键组合要能确保唯一性. 个人理解:确保唯一性,一个或多个实体键,实现了复合主键或组合主键的效果. 这样查询是,延迟加载机制,才知道哪些需要重新从数据 ...
随机推荐
- word----遇到问题-----word中插入的图片无法左对齐----格式按钮为灰色
当我们在用word时,有时要插入图片,却发现,插入的图片只在中间位置,不能拖到左边,这时怎么办呢 主要是图层的高低原因导致的不能拖动. 这个时候我们只需要设置一下图片的图层类型即可. 对着图片右键在设 ...
- 【bzoj3796】Mushroom追妹纸
Portal -->bzoj3796 Description 给出字符串s1.s2.s3,找出一个字符串w,满足: 1.w是s1的子串: 2.w是s2的子串: 3.s3不是w的子串. 求w的 ...
- Struts初探(二)
总是找不到对应的action,但别的没用到动态方法调用的都没有问题. 报异常:java.lang.reflect.InvocationTargetException - Class: com.open ...
- 第1章-初识Vue.js
一.初识Vue 1.1.本次我们学习的内容 常用指令:vue中最基础的内容 交互: 网络请求 组件: 是vue.js 这个框架 最核心,最精华的内容,因为vue呐,它在所有的框架中是把组件化做到了极致 ...
- C/C++预处理宏的总结
1.定义顺序的无关性 #define PI 3.14 #define TWO_PI 2*PI 这两句谁前谁后无所谓,因为预处理器不断迭代来实现宏替换,直到源文件中没有宏了才停止. 2. 宏变量变成字 ...
- HDU 5700 优先队列(或者multiset) 或 线段树
题目大意:有n个区间,求k个区间,使得这k个区间相交的区间内数字之和最大.数列的数字均>=0 优先队列思路: 按照左端点sort,然后枚举左端点,假设他被覆盖过k次,然后用优先队列来维护最右端即 ...
- 课程设计——利用信号量实现哲学家进餐问题(JAVA)
package cn.Douzi.PhiEat; /** * 表示筷子的类 */ public class Chopstick{ /** * 表示筷子是否可用 */ private volatile ...
- WPF技术点
常用Path路径 正三角形(左):<Path Data="M40,0 L0,30 40,60 z" Stretch="Uniform"/> 正三角形 ...
- 使用 jQuery 避免鼠标双击
介绍 当用户双击DOM对象(例如按钮和链接等)时,对于用户交互一直是个麻烦的问题. 幸运的是, jQuery 提供了一个相当棒的解决方法. 那就是.one(). .one()这个方法是做什么的? 它附 ...
- 51nod1056 最长等差数列 V2
基准时间限制:8 秒 空间限制:131072 KB 分值: 1280 N个不同的正整数,从中选出一些数组成等差数列. 例如:1 3 5 6 8 9 10 12 13 14 等差子数列包括(仅包括 ...