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

  • 相关阅读:
    07-图4 哈利·波特的考试 (25分)
    Windows环境下清除SVN文件
    查看SQL SERVER 2008R2 表大小
    Oauth支持的5类 grant_type 及说明
    SignalR的性能监测
    Loadrunner11安装
    Azure ServiceBus 通信失败问题
    sql server text类型 存储问题
    System.BadImageFormatException
    InputStream只能读取一次的解决办法 C# byte[] 和Stream转换
  • 原文地址:https://www.cnblogs.com/lanpingwang/p/6623071.html
Copyright © 2011-2022 走看看