zoukankan      html  css  js  c++  java
  • EntityFramework 学习 一 Lazy Loading 1

    延迟加载:延迟加载相关的数据

     1 using (var ctx = new SchoolDBEntities())
     2     {
     3         //Loading students only
     4         IList<Student> studList = ctx.Students.ToList<Student>();
     5 
     6         Student std = studList[0];
     7 
     8         //Loads Student address for particular Student only (seperate SQL query)
     9         StudentAddress add = std.StudentAddress;
    10     }
    11     

    首先查询Student表

    SELECT 
    [Extent1].[StudentID] AS [StudentID], 
    [Extent1].[StudentName] AS [StudentName], 
    [Extent1].[StandardId] AS [StandardId]
    FROM [dbo].[Student] AS [Extent1]
            

    再查询StudentAddress表

    exec sp_executesql N'SELECT 
    [Extent1].[StudentID] AS [StudentID], 
    [Extent1].[Address1] AS [Address1], 
    [Extent1].[Address2] AS [Address2], 
    [Extent1].[City] AS [City], 
    [Extent1].[State] AS [State]
    FROM [dbo].[StudentAddress] AS [Extent1]
    WHERE [Extent1].[StudentID] = @EntityKeyValue1',N'@EntityKeyValue1 int',@EntityKeyValue1=1

    可以为指定的属性或整个上下文关闭延迟加载的功能,关闭属性的延迟加载功能就是不要设置属性为virtual

    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
    using System.Data.Entity.Core.Objects;
    using System.Linq;
        
    public partial class SchoolDBEntities : DbContext
    {
        public SchoolDBEntities(): base("name=SchoolDBEntities")
        {
            this.Configuration.LazyLoadingEnabled = false;
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    }
      

     延迟加载的规则:

    1.context.Configuration.ProxyCreationEnabled必须为true

    2.context.Configuration.LazyLoadingEnabled必须为true

    3.导航属性必须定义为public virtual

  • 相关阅读:
    在Ubuntu1804上使用Apache2的部署Django配置
    UbuntuServer1804设置uwsgi自启动服务
    ubuntu 安装k8s 1.22.3 (VirtualBox虚拟机)
    启动keepalived 报错
    wasm-pack 编译错误 unexpected character 'u{0}'
    mariadb-安装
    K8S1.18 安装教程
    Ubuntu共享文件权限问题
    docker 安装consul
    Ubuntu 安装 MySQL 和远程连接
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/6623071.html
Copyright © 2011-2022 走看看