第一篇为大家带来新的API,DbSet<>.Find()。

过去我们常常用Where或First(FirstOrDefault)方法来查找对应的实体,比如:

var people = from p in context.People
where p.Name.StartsWith("M")
select u;
var people = context.People.FirstOrDefault(p => p.Name == "Michael");

这样查找的缺点是:即使我们相应的实体已经被ObjectContext缓存,EF还是会去执行数据库访问,而数据库访问是被普遍认为比较耗费性能的。

EF4.1为我们提供了一个新的API: DbSet<>.Find()。它可以帮助我们通过主键来查找对应的实体。并且如果相应的实体已经被ObjectContext缓存,EF会在缓存中直接返回对应的实体,而不会执行数据库访问。

比如我们查找主键PersonID为1的Person实体:

var person = context.People.Find(1);

也可用于联合主键(比如查找主键PersonID=1, PersonName="Michael"的实体):

var person = context.People.Find(1, "Michael");

注意:此处输入联合主键的次序需要按照我们定义改实体类时声明主键的次序。

和之前直接用Where或First的调用不同,Find函数对于刚刚新增的实体也能找到:

using (var context = new MyContext())
{
context.People.Add(new People { PersonID = 100 });
var newPerson = context.People.Find(100);
}

最新文章

  1. [deviceone开发]-do_Webview的基本示例
  2. 线性控制原理——PID算法应用
  3. centos Apache、php、mysql默认安装路径
  4. Oracle备份 还原命令
  5. [原创]java WEB学习笔记71:Struts2 学习之路-- struts2常见的内建验证程序及注意点,短路验证,非字段验证,错误消息的重用
  6. TDDL:来自淘宝的分布式数据层
  7. Android Developers:拖动和缩放
  8. 【CF】556D A Lot of Games
  9. 转:CRect类 的介绍
  10. jquery知识点积累
  11. 你是如何自学 Python 的?
  12. 【阿里聚安全&#183;安全周刊】科学家警告外星恶意代码|新方法任意解锁iPhone
  13. EntityFramework 6.x和EntityFramework Core关系映射中导航属性必须是public?
  14. .pyc是个什么 python的执行过程
  15. JavaScript中Map和ForEach的区别
  16. 多级nginx代理,获取客户端真实ip
  17. PSD的单位及计算方法[转]
  18. 浅析原生js模仿addclass和removeclass
  19. python的索引问题
  20. pthread线程特定数据

热门文章

  1. sql sever 创建临时表的两种方法
  2. 学习Go语言之观察者模式
  3. d3 bubble源码分析
  4. 洛谷3961 [TJOI2013]黄金矿工
  5. NOIP2017 Day-1 模板荟萃
  6. CentOS7.3 下开放防火墙的端口
  7. 维护的JSP站点数据丢失
  8. 无法往SQL Server Management Studio拖脚本
  9. 分享js中的 sort 另一种用法
  10. 使用sh库执行shell命令