zoukankan      html  css  js  c++  java
  • EF Core 延迟加载

    EF Core 默认不支持 延迟加载 Lazy Loading(延迟加载的优点:减少交互数据量(不能减少交互次数)); 按需加载数据
    默认不支持的原因:延迟加载有滥用的现象

    实现方式 ==>

    1. 使用开源组件 ** Z.EntityFramework.Plus.EFCore**
      需要进行延迟加载的字段标注 virtual

    2. 使用微软组件 Microsoft.EntityFrameworkCore.Abstractions

      使用ILazyLoader接口

         public class Blog
          {
              private ILazyLoader LazyLoader { get; set; }
      
              public Blog(ILazyLoader lazyLoader)
              {
                  LazyLoader = lazyLoader;
              }
              public int Id { get; set; }
              public string Name { get; set; }
              public string Url { get; set; }
              public DateTime CreatedTime { get; set; }
              public DateTime ModifiedTime { get; set; }
              public byte Status { get; set; }
              public bool IsDeleted { get; set; }
      
              private ICollection<Post> _posts;
      
              public ICollection<Post> Posts
              {
                  get => LazyLoader?.Load(this, ref _posts);
                  set => _posts = value;
              }
          }
      

    延迟加载避免循环引用

    循环引用 => *由于数据库主外键关联,将对象进行Json序列化时会遇到循环引用的问题*

    若在.NET Core Web应用程序中启用了延迟加载,为了避免虚循环引用问题,需要在ConfigureServices方法中进行如下配置

    public void ConfigureServices(IServiceCollection services)
    {
            services.AddMvc().AddJsonOptions(
            options => options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore);
    }
    
  • 相关阅读:
    P1017 进制转换
    P1100 高低位交换
    P1469 找筷子
    P1866 编号
    SQL常用语句(T-SQL、PL/SQL)
    Proxyer内网穿透配置教程
    使用JS检测自定义协议是否存在
    C# 代码启动ClickOnce应用
    SQL Server 异地备份到远程共享文件夹异常处理
    发布ClickOnce应用程序步骤与URL传参应用
  • 原文地址:https://www.cnblogs.com/louiszh/p/14768540.html
Copyright © 2011-2022 走看看