Tho*_*mee 26 .net linq linq-to-entities entity-framework entity-framework-5
我已经使用了Find(id)与实体框架5.但是集合扩展方法,很多的例子我看到的使用Where(s => s.Id == 1),而我加入FirstOrDefault()来获取对象,而不是一个集合.这是一种风格差异,还是有明显的.Where()偏好的功能原因?
Jud*_*udo 46
Find()与Where(),Single(),First()等有根本区别,因为它首先在内存中搜索对象,如果尚未加载对象,则只访问数据库.因此,尝试尽可能使用Find(),因为它提供了从内存加载的可能的速度优势.Find()仅适用于主键,不支持lambdas,因此不够灵活.
Where()通常用于获取对象列表.要检索单个对象,我通常使用Single(),SingleorDefault(),First(),FirstorDefault().
Single()和SingleOrDefault()与First()和FirstOrDefault()不同,因为它们确保最多一个对象可以满足有助于确保数据库中数据完整性的条件.它们的'Single'子句通过在SQL查询中选择'TOP 2'然后在返回两个实体时抛出异常来完成此操作.
请注意,您不应将这些链接到Where()子句的末尾.
而不是
.Where(s => s.Id == 1).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
使用:
.FirstOrDefault(s => s.Id == 1);
Run Code Online (Sandbox Code Playgroud)
我写了一篇博文来充分探讨这个问题:http://judeokelly.com/primer-on-selecting-data-using-entity-framework/
| 归档时间: |
|
| 查看次数: |
15340 次 |
| 最近记录: |