zoukankan      html  css  js  c++  java
  • 解读DbContext中的三种【EagerLoad,LazyLoad,ExplicitLoading】加载模式

    一:立即加载,延迟加载,显式加载

    1. 立即加载

    Student Domain
    {
    Teacher theacher
    }

    using (SchoolDBEntities db = new SchoolDBEntities())
    {
    db.Database.Log = Console.WriteLine;

    db.Configuration.LazyLoadingEnabled = false;

    var item = db.Students.Include("Courses").Include("StudentAddress").ToList();

    }


    StudentAddress Domain


    当我获取Student的时候,StudentAddress是否已经加载出来????


    立即加载:

    有什么好处:如果一次性加载出来,可以后续从cache中读取。。。或者减少数据库的访问次数。。。。


    延迟加载:增加了数据库的压力,,,只有你需要这条数据的时候我们才加载,如果数据量比较大。。。


    Tree结构,树形菜单。。 【Tree】 client => server

    默认情况下,我们就是延迟加载。。。

    db.Configuration.LazyLoadingEnabled = false; 用来指定是否延迟加载。。。。


    2. 如果关闭延迟加载??? 怎么显示加载。。。

    using (SchoolDBEntities db = new SchoolDBEntities())
    {
    db.Database.Log = Console.WriteLine;

    db.Configuration.LazyLoadingEnabled = false;

    var item = db.Students.FirstOrDefault();


    //现在已经关闭延迟加载了,如果手工让其加载???
    db.Entry(item).Reference(s => s.StudentAddress).Load();

    var address = item.StudentAddress;
    }

  • 相关阅读:
    平凡的母亲
    从一道笔试题谈算法优化(下)
    Lua manual翻译——第三章第七、八、九节
    [VC/MFC]一条语句实现程序运行时隐藏窗口
    《〈XNova/OGame〉源码笔记》(5)
    Fedora7,8,9 安装截图
    电信业重组以及3G牌照的发放
    FRC阅读软件及打印
    VC++学习的一些资源
    Perl 学习心得体会
  • 原文地址:https://www.cnblogs.com/dragon-L/p/6545863.html
Copyright © 2011-2022 走看看