zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    转 mysql 数据结构详解
    转单元测试之道C#版
    转 告诉你如何用C#写出iOS与Android应用
    转 MySQL索引背后的数据结构及算法原理
    转单元测试基础知识
    转C#冒泡排序
    如何让web页面鼠标右键单击之后不出现菜单选项
    开博文
    jquery ui 1.7 ui.tabs 动态添加与关闭(按钮关闭+双击关闭)
    jquery ui tabs详解(中文)
  • 原文地址:https://www.cnblogs.com/woxpp/p/entityframeworkinclude.html
Copyright © 2011-2022 走看看