• 解读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;
    }

  • 相关阅读:
    总结
    ElasticSearch课件1.22
    clickhouse1.0.5
    大数据实时项目(ads层)
    大数据实时项目(dws层)1.2
    大数据实时项目(日活)1.6.1
    01_大数据技术之Spark入门(2.1)
    03_大数据技术之SparkSql(2.0)
    04_大数据技术之SparkStreaming(2.0)
    05_大数据技术之Spark内核解析(1.1)
  • 原文地址:https://www.cnblogs.com/dragon-L/p/6545863.html
Copyright © 2020-2023  润新知