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;
    }

  • 相关阅读:
    前端:js
    HTML和CSS总结
    前端二:CSS
    前端一:走进HTML
    SQLALchemy(连表)、paramiko
    上下文管理、线程池、redis订阅和发布
    P4234 最小差值生成树
    P2387 [NOI2014]魔法森林
    P3721 [AH2017/HNOI2017]单旋
    P4271 [USACO18FEB]New Barns
  • 原文地址:https://www.cnblogs.com/dragon-L/p/6545863.html
Copyright © 2011-2022 走看看