EF的三种数据加载方式

EF中有3种数据加载方式,具体如下:

延迟加载(默认): 设置导航属性为virtual

贪婪加载:不设置导航属性为virtual,并且对导航属性使用Include

显示加载:不设置导航属性为virtual,并且对导航属性使用Reference(单个对象).Load()或Collection(对象集).Load()

    public class Programm
    {
        public static void Main()
        {
            TestDbContext db = new TestDbContext();

            //延迟加载
            var res1 = db.Reservations;
            foreach (var item in res1)
            {
                //do something
            }

            //贪婪加载
            //有多个Include会全部完成加载,生成的sql命令是一条完成的
            var res2 = db.Reservations.Include(r => r.Details);

            //显示加载
            var res3 = db.Reservations.ToList();
            foreach (var item in res3)
            {
                var temp = db.Entry(item);
                temp.Collection(i => i.Details).Load();
                temp.Reference(i => i.Customer).Load();
            }
        }
    }

    public class Reservation
    {
        public int ReservationId { get; set; }
        public string ClientName { get; set; }
        public string Location { get; set; }
        public List<ReservationDetails> Details { get; set; }
        public Customer Customer { get; set; }
    }

    public class ReservationDetails
    {
        public int Id { get; set; }
        public DateTime Time { get; set; }
    }

    public class Customer
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    public class TestDbContext : DbContext
    {
        public DbSet<Reservation> Reservations { get; set; }
    }
时间: 2024-08-04 03:32:25

EF的三种数据加载方式的相关文章

springboot(一) 三种热加载方式

参考博客:开发常用的热部署方式汇总 热加载方式有三种: Spring Loaded spring-boot-devtools JRebel插件 原文地址:https://www.cnblogs.com/rouqinglangzi/p/9503246.html

imageNamed , imageWithContentsOfFile , initWithContentsFile 三种图片加载方式的区别

UIImage常用的加载图片有3种方式: imageNamed , imageWithContentsOfFile , initWithContentsFile .imageNamed:UIImage image = [UIImage imageNamed:@"image.gif"] . 得到的对象是autoRelease的.这个方法有点特殊,它在生成image对象的同时,会把图像数据 根据它的名字缓存在系统内存中,以提高imageNamed方法获得相同图片的image对象的性能.即使

浅谈Entity Framework中的数据加载方式

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 如果你还没有接触过或者根本不了解什么是Entity Framework,那么请看这里http://www.entityframeworktutorial.net/EntityFramework-Architecture.aspx,其中的一系列文

felayman---nodejs的几种模块加载方式

nodejs的几种模块加载方式 一.直接在exports对象中添加方法 1.首先创建一个模块(module.js)module.js exports.One = function(){ console.log('first module'); }; 2.load.js var module =require('./module'); module.One(); 这样我们就可以在引入了该模块后,返回一个exports对象,这里是指module对象,其实都只是两个引用或者句柄,只是都指向了同一个资源

嵌入式启动之三:应用程序的三种存储和加载方式

通过前面嵌入式启动方式的学习,再来理解嵌入式应用程序的三种加载方式是比较容易的.一般意义上,启动是为了引导OS到内存,而应用程序则是操作系统run起来后的用户选择,两者是比较相似的.先根据启动的两种方式来介绍应用程序的加载. 1. 对于资源有限型的嵌入式系统,应用程序在编译.链接之后,会通过二进制工具分析可执行文件的格式,抽出code和data段数据,生成.HEX格式或者.BIN格式,下载到SOC内置的flash中.在上电之后就直接执行了.这种加载方式称为离线加载. 2. 对于资源宽裕型的嵌入式

两种数据加载动画

android 数据加载动画: <FrameLayout android:layout_centerInParent="true" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RelativeLayout android:id="@+id/rl_loading" android:layout_width

三种Spring加载机制

方法一. 在main方法中启动Spring ApplicationContext ac = new XmlApplicationContext("applicationContext.xml"); 方法二. 利用Spring自带的Servlet启动, 配置好Servlet, 加载Servlet的时候, 就初始化了WebApplicationContext 方法三. 利用Spring自带的Listener启动, 装配好Listener, 加载Listener的时候, 就初始化了WebAp

APP中数据加载的6种方式-b

我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的内容有明确的预期呢? 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数

iOS APP中数据加载的6种方式

我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数据加载等待,甚至在无网络的时候,整个处于不可用状态.那么我们怎么处理好界面交互中的加载设计,保证体验无缝衔接,保证用户没有漫长的等待感,而可以轻松自在的享受等待,对加载后的内容有明确的预期呢? 设计师在进行APP设计的设计时,往往会更加专注于界面长什么样,界面和界面之间怎么跳转,给予用户什么样的操作反馈,却偏偏特别容易忽略掉一个比较重要的环节,就是APP数据加载中的设计,所以会导致我们看到的APP,往往有着华丽的启动界面,然后就是漫长的数