ef的三种数据加载方式

author author     2022-08-01     649

关键词:

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

 

ef中的三种删除方式

1.第一种现查询对象是否存在:varobj=firstorDefault()=>如果对象存在context.users.Remove(obj); 根据sql发现;执行两次;第一次SELLECTTOP1*FROMUSERS; 第二次delete xx where; 第二种:自己创建id相同的实体;然后附加;attach,... 查看详情

mybatis延迟加载的三种加载方式深入,你get了吗?

延迟加载  延迟加载对主对象都是直接加载,只有对关联对象是延迟加载。  延迟加载可以减轻数据库的压力,  延迟加载不可是一条SQL查询多表信息,这样构不成延迟加载,会形成直接加载。  延迟加载分为三种类型... 查看详情

js异步加载的三种方式

  js加载的缺点:加载工具方法没必要阻塞文档,过得js加载会影响页面效率,一旦网速不好,那么整个网站将等待js加载而不进行后续渲染等工作。有些工具方法需要按需加载,用到再加载,不用不加载,。  默认正常模式... 查看详情

js异步加载的三种方式

一、同步加载  我们平时使用的最多的一种方式。<scriptsrc="http://yourdomain.com/script.js"></script><scriptsrc="http://yourdomain.com/script.js"></script>  同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止后续的解析... 查看详情

hive分区表与数据产生关联的三种方式

所谓关联,可以理解为能够使用select查询到1.load这是最常用的一种方式loaddatalocalinpath"数据路径"intotabletable_namepartition(分区字段)使用load加载数据会自动创建分区的,这样你加载的数据就会和分区表进行关联,之后select就可以了 2.... 查看详情

tensorflow:读取数据的三种方式及tfrecord的使用

参考:https://blog.csdn.net/lujiandong1/article/details/53376802https://blog.csdn.net/happyhorizion/article/details/77894055读取数据的三种方式Preloadeddata:预加载数据importtensorflowastf#设计Graphx1=tf.constant([2,3 查看详情

图解script的三种加载方式异步加载顺序

摘录如下:可以很清晰的看出:<script>:脚本的获取和执行是同步的。此过程中页面被阻塞,停止解析。<scriptdefer="defer">:脚本的获取是异步的,执行是同步的。脚本加载不阻塞页面的解析,脚本在获取完后并不立即执行... 查看详情

类加载的三种方式比较(代码片段)

虚拟机加载类的途径1、由new关键字创建一个类的实例在由运行时刻用new方法载入如:Dogdog=newDog();2、调用Class.forName()方法通过反射加载类型,并创建对象实例如:Classclazz=Class.forName(“Dog”);Objectdog=clazz.newInstan... 查看详情

spring加载properties配置文件的三种方式

一、通过context:property-placeholder标签实现配置文件加载1)用法:1、在spring.xml配置文件中添加标签<context:property-placeholderignore-unresolvable="true"location="classpath:redis-key.properties"/>2、在spring.xml中使用配置文件属性:$< 查看详情

类加载器盲区整理

类加载器盲区整理ServiceLoader原理深入理解Java类加载器(ClassLoader)类加载的三种方式比较ServiceLoader原理ServiceLoader原理深入理解Java类加载器(ClassLoader)深入理解Java类加载器(ClassLoader)类加载的三种方式比较类加载的三种方式比较 查看详情

使用javascript判断图片是否加载完成的三种实现方式

有时需要获取图片的尺寸,这需要在图片加载完成以后才可以。有三种方式实现,下面一一介绍。一、load事件 <!DOCTYPEHTML><html><head><metacharset="utf-8"><title>img-loadevent</title></head><body><img 查看详情

第十三节:ef的三种模式之来自数据库的codefirst模式

一.简介  【来自数据库的CodeFirst模式】实质上并不是CodeFirst模式,而是DBFirst模式的轻量级版本,在该模式中取消了edmx模型和T4模板,直接生成了EF上下文和相应的类,该模式出现在VS2015版本以后。  该模式也是适用于数... 查看详情

ef学习笔记:读取关联数据

...edData本章主要讲述加载显示关联数据;数据加载分为以下三种  Lazyloading  这种加载方式在于需要用到这个导航属性数据的时候,才会去数据库取数据,如下图,循环中,每一次都去数据库取一次数据:    Eagerloading ... 查看详情

ef7codefirst

加载方式三种1.EagerLoading2.LazyLoading3.ExplicitLoading使用EF在与关系型数据库的交互中不可避免地需要加载数据,如何加载数据变得至关重要。你可以设想在一个包含数十万条数据的表中,你如何通过EF来加载数据呢?一次性将所有数... 查看详情

springmvc返回json数据的三种方式

SpringMVC返回json数据的三种方式:http://blog.csdn.net/shan9liang/article/details/42181345 上述第三种方法:可能会出现这个jar包没有的情况,引入即可,下面pom引入即可java.lang.NoClassDefFoundError:com/fasterxml/jackson/core/JsonProcessingExce 查看详情

struts中的数据处理的三种方式

 Struts中的数据处理的三种方式: publicclassDataActionextendsActionSupport{@OverridepublicStringexecute()throwsException{//1.请求数据封装;2.调用Service处理业务逻辑,拿到结果数据3.数据保存到域中/**//Struts中对数据操作,方式1:直接拿到Se... 查看详情

django-获取表单数据的三种方式

1、queryset对象2、字典3、queryset元组    备注:对象通过”对象.列名"方式访问,元组通过“对象.索引”方式访问。  查看详情

实现viewpager懒加载的三种方法

方法一在Fragment可见时请求数据。此方案仍预加载了前后的页面,但是没有请求数据,只有进入到当前Framgent时才请求数据。优点:实现了数据的懒加载缺点:一次仍是三个Framgment对象,不是完全意义的懒加载12345678910111213141516171... 查看详情