EntityFramework IEnumerable,IQueryable ,Include

使用IQueryable

       using (var db = new CentaStaffEntities())
            {
                IQueryable<Staff> queryablestaffs = db.Staff.AsQueryable().OrderBy(p=>p.StaffID).Skip(3).Take(3);
                foreach (var item in queryablestaffs)
                {
                    Console.WriteLine(item.CnName);
                }
            }

使用IEnumerable

            using (var db = new CentaStaffEntities())
            {
                IEnumerable<Staff> enumerablestaffs = db.Staff.AsEnumerable().OrderBy(p => p.StaffID).Skip(3).Take(3);
                foreach (var item in enumerablestaffs)
                {
                    Console.WriteLine(item.CnName);
                }
            }

IQueryable接口与IEnumberable接口的区别:  IEnumerable<T> 泛型类在调用自己的SKip 和 Take 等扩展方法之前数据就已经加载在本地内存里了,而IQueryable<T> 是将Skip ,take 这些方法表达式翻译成T-SQL语句之后再向SQL服务器发送命令,它并不是把所有数据都加载到内存里来才进行条件过滤。

参考:http://www.cnblogs.com/ambon/articles/4766924.html

Include(),两表必须含有外键关系,只需要指定键名对应的类属性名即可,不需指定结果字段(即全部映射)。默认搜索某表时,不会顺带查询外键表,直到真正使用时才会再读取数据库查询;若是使用 Include(),则会在读取本表时把指定的外键表信息也读出来。

 using (var db = new TestEntities())
            {
                IEnumerable<Student> enumerablestaffs = db.Student;
                foreach (var item in enumerablestaffs)
                {
                    //每次都会获取
                    Console.WriteLine(item.Class.Name);
                }
            }

Include

            using (var db = new TestEntities())
            {
                //预加载关联表  前提必须有主外键关系
                IEnumerable<Student> enumerablestaffs = db.Student.Include("Class");
                //只查询一次
                foreach (var item in enumerablestaffs)
                {
                    Console.WriteLine(item.Class.Name);
                }
            }

Left join

时间: 2024-08-24 22:43:03

EntityFramework IEnumerable,IQueryable ,Include的相关文章

IList,ICollection,IEnumerable,IEnumerator,IQueryable

1.首先看一个简单的例子 int[] myArray = { 1, 32, 43, 343 }; IEnumerator myie = myArray.GetEnumerator(); myie.Reset(); while (myie.MoveNext()) { int i = (int)myie.Current; Console.WriteLine("Value: {0}", i); } 相信很多人都不会像上面这样去遍历myArray这个数组,通常我们这样会这样做 foreach

[转]那些年我还不懂:IList,ICollection,IEnumerable,IEnumerator,IQueryable

1.首先看一个简单的例子 int[] myArray = { 1, 32, 43, 343 }; IEnumerator myie = myArray.GetEnumerator(); myie.Reset(); while (myie.MoveNext()) { int i = (int)myie.Current; Console.WriteLine("Value: {0}", i); } 相信很多人都不会像上面这样去遍历myArray这个数组,通常我们这样会这样做 foreach

#include,#import ,@class 有什么区别?

#include 和 #import 有相同的效果,只不过#import 能确保头文件只被导入一次,不会引起重复导入.#import能把头文件的所有信息都获取到,包含这个类的变量和方法.而@class只是会告诉编译器,其后声明的名称是类的名称,至于这些类是如何定义的却完全不知道,因此,即使你在头文件中使用了@class,还是需要在声明文件.m中导入头文件的. 注意:@class 的使用时为了防止头文件之间互相导入(交叉导入):

mvc之验证IEnumerable&lt;T&gt; 类型,多选框验证

原文:mvc之验证IEnumerable<T> 类型,多选框验证 假设我们有这么一种需求,我们要同时添加年级和年级下面的多个班级,我们一般会像下面这种做法. Action中我们这样接收: [HttpPost] public ActionResult CreateGrade(string gradeName, IEnumerable<string> classNames) { return View(); } View中我们一般会这样做: @using (Ajax.BeginForm

pandas.DataFrame.describe 官方文档翻译percentile_width,percentiles,include, exclude

 使用格式:DataFrame.describe(percentile_width=None, percentiles=None, include=None, exclude=None)  作用:生成各种汇总统计信息,不包括代表非数字值的特殊值. 参数: 1.percentile_width:Float类型,不推荐使用 percentile_width参数将会在将来的版本中被移除,并使用percentiles替代.如果不设置percentile_width,宽度默认为50,相当于上限为75,下限

MVC实用架构设计(三)——EF-Code First(1):Repository,UnitOfWork,DbContext

前言 终于到EF了,实在不好意思,最近有点忙,本篇离上一篇发布已经一个多星期了,工作中的小迭代告一段落,终于有点时间来继续我们的架构设计了,在这里先对大家表示歉意. 其实这段时间我并不是把这个系列给忘记了,而是一直在思考,想着接下来应该怎么写.因为园子里已经有很多非常优秀的EF的文章了,比如: Entity Framework Code First 学习日记 [译著]Code First :使用Entity. Framework编程 Entity Framework技术系列 EF框架step b

IEnumerable和IQueryable的区别以及背后的ExpressionTree表达式树

关于IEnumerable和IQueryable的区别,这事还要从泛型委托Func<T>说起.来看一个简单的泛型委托例子: class Program { static void Main(string[] args) { Func<int, bool> f = i => i > 5; Console.WriteLine(f(3)); Console.WriteLine(f(10)); Console.ReadKey(); } } Func<T>是"

entity framework 新手入门篇(3)-entity framework实现orderby,count,groupby,like,in,分页等

前面我们已经学习了entityframework的基本的增删改查,今天,我们将在EF中实现一些更加贴近于实际功能的SQL方法. 承接上面的部分,我们有一个叫做House的数据库,其中包含house表和seller表. 在本次学习之前,我们先要了解一个神奇的接口,iqueryable这个接口类似于ienumable,但并不完全相同,Iqueryable是可查询类型需要实现的最重要的接口,在其Count,ToList,ToArray之后才会真正执行查询,所以,为了保证性能,请尽量在最后一步在进行Co

IEnumerable和IQueryable和Linq的查询

IEnumerable和IEnumerable 1.IEnumerable查询必须在本地执行.并且执行查询前我们必须把所有的数据加载到本地.而且更多的时候.加载的数据有大量的数据是我们不需要的无效数据.但是我们却不得不传输更多的数据.做更多的无用功.使用IEnumerable,所有对于IEnumerable的过滤,排序等操作,都是在内存中发生的.也就是说数据已经从数据库中获取到了内存中,只是在内存中进行过滤和排序操作. 2.IQueryable却总能只提供你所需要的数据.大大减少了数据的传输IQ