目录

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数据查询基础(上)查询数据的实用编程技巧的更多相关文章

  1. EF – 2.EF数据查询基础(上)查询数据的实用编程技巧

    目录 5.4.1 查询符合条件的单条记录 EF使用SingleOrDefault()和Find()两个方法查询符合条件的单条记录. 5.4.2 Entity Framework中的内部数据缓存 DbS ...

  2. mysql 再查询结果的基础上查询(子查询)

    SELECT A.wx_name, A.wx_litpic, B . * FROM ( SELECT uid, COUNT( * ) AS daticishu FROM statements , ) ...

  3. (25)ASP.NET Core EF查询(复杂查询运算符、原生SQL查询、异步查询)

    1.复杂查询运算符 在生产场景中,我们经常用到LINQ运算符进行查询获取数据,现在我们就来了解下生产场景经常出现几种复杂查询运算符. 1.1联接(INNER JOIN) 借助LINQ Join运算符, ...

  4. SQL语句or查询,union all查询,分页查询,分组,AND查询

    一.OR查询 1.在AND多个筛选条件和一个or条件时,如果没有括号包裹,or会就近原则包裹之后的所有and条件,也就是同级的多个and条件只能对,or条件的一边起作用 2.如果or条件两边的筛选条件 ...

  5. (在模仿中精进数据可视化03)OD数据的特殊可视化方式

    本文完整代码已上传至我的Github仓库https://github.com/CNFeffery/FefferyViz 1 简介 OD数据是交通.城市规划以及GIS等领域常见的一类数据,特点是每一条数 ...

  6. HDFS源码分析数据块汇报之损坏数据块检测checkReplicaCorrupt()

    无论是第一次,还是之后的每次数据块汇报,名字名字节点都会对汇报上来的数据块进行检测,看看其是否为损坏的数据块.那么,损坏数据块是如何被检测的呢?本文,我们将研究下损坏数据块检测的checkReplic ...

  7. ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 使用 EF 框架查询数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 使用 EF 框架查询数据 上一章节我们学习了如何设置 ...

  8. EF Core 中多次从数据库查询实体数据,DbContext跟踪实体的情况

    使用EF Core时,如果多次从数据库中查询一个表的同一行数据,DbContext中跟踪(track)的实体到底有几个呢?我们下面就分情况讨论下. 数据库 首先我们的数据库中有一个Person表,其建 ...

  9. EF 查询视图出现重复数据

    解决方案: 由多张表组成的视图,要加实体键.而且实体键组合要能确保唯一性. 个人理解:确保唯一性,一个或多个实体键,实现了复合主键或组合主键的效果. 这样查询是,延迟加载机制,才知道哪些需要重新从数据 ...

随机推荐

  1. Unity开发-你必须知道的优化建议

    转自:http://blog.csdn.net/leonwei/article/details/18042603 最近研究U3D开发,个人认为,精通一种新的技术,最快最好的方法就是看它的documen ...

  2. 跟着百度学PHP[4]-OOP面对对象编程-3-实例化一个对象

    当定义好类后,我们使用new关键字来实例化一个对象! 格式: $object = new 类名; <?php class Person{ private $name; "; priva ...

  3. hiho #1310 : 岛屿 (dfs,hash)

    题目2 : 岛屿 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给你一张某一海域卫星照片,你需要统计: 1. 照片中海岛的数目 2. 照片中面积不同的海岛数目 3. 照 ...

  4. js ajax简单使用

    文章部分资源来源:(http://blog.csdn.net/lzkkevin/article/details/6777474)以及(http://www.cnblogs.com/hwx0807/ar ...

  5. JDBC的应用

    JDBC的开发步骤: 1.  引入JDBC驱动架包 2.  程序中引入JDBC驱动类     3.  创建java与数据库的连接 4.  跟数据库交互:发送sql语句,接收数据库对sql语句的执行结果 ...

  6. struts2回显指定的错误信息

     <s:fielderror />  显示全部的 错误消息(用addFieldError方法添加的 )   <s:fielderror>            <s:pa ...

  7. centos 设置永久dns

    最近在折腾一个问题. 由于服务器的带宽是联通5M, 不稳定.而且所处的网络的dns解析貌似老出问题,每隔一定周期解析时间特别长. 于是乎,想在本地做一个dns,这样可以减少dns解析时间,并做些静态配 ...

  8. PHP+Hadoop实现数据统计分析

    记一次完全独立完成的统计分析系统的搭建过程,主要用到了PHP+Hadoop+Hive+Thrift+Mysql实现 安装 Hadoop安装: http://www.powerxing.com/inst ...

  9. javascript开发 ios和android app的简单介绍

    先看几个名词解释: nodejs ionic,Cordova,phoneGap,anjularjs react-native,reactjs nodeJs 的介绍参见这里,写的很好http://www ...

  10. bccomp比较大小注意

    2015年12月15日 14:18:56 星期二 echo bccomp('1', '1.01', 2); // -1 echo bccomp('1', '1.01', 3); // -1 echo ...