C#中如何使用EF Core的查询延迟加载代理?如何启用?

煙雲
发布: 2025-10-12 09:12:01
原创
965人浏览过
启用 EF Core 延迟加载需安装 Microsoft.EntityFrameworkCore.Proxies 包,实体导航属性标记为 virtual,并在 DbContext 配置中调用 UseLazyLoadingProxies(),即可实现访问时自动加载关联数据。

c#中如何使用ef core的查询延迟加载代理?如何启用?

在 C# 中使用 EF Core 的延迟加载(Lazy Loading),需要通过配置代理来实现。延迟加载意味着导航属性在首次访问时才从数据库中加载,而不是在主查询时一并加载。

启用延迟加载的前提条件

要使用延迟加载代理,必须满足以下几点:

  • 导航属性必须是 virtual
  • 需要安装 EF Core 的延迟加载代理 NuGet 包
  • DbContext 配置中启用延迟加载

1. 安装延迟加载代理包

Install-Package Microsoft.EntityFrameworkCore.Proxies

这是 EF Core 官方提供的代理生成包,用于支持延迟加载功能。

2. 实体类中定义 virtual 导航属性

确保你的导航属性(如集合或引用类型)标记为 virtual,这样代理才能重写它们以实现延迟加载。

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

    public virtual ICollection<Post> Posts { get; set; } = new List<Post>();
}

public class Post
{
    public int Id { get; set; }
    public string Title { get; set; }
    public int BlogId { get; set; }

    public virtual Blog Blog { get; set; }
}

3. 在 DbContext 中启用代理和延迟加载

OnConfiguringStartup.cs(ASP.NET Core)中配置上下文时,使用 UseLazyLoadingProxies() 方法。

如知AI笔记
如知AI笔记

如知笔记——支持markdown的在线笔记,支持ai智能写作、AI搜索,支持DeepseekR1满血大模型

如知AI笔记27
查看详情 如知AI笔记
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
    optionsBuilder
        .UseSqlServer("YourConnectionString")
        .UseLazyLoadingProxies(); // 启用延迟加载代理
}

如果你使用依赖注入(如 ASP.NET Core),可以在 Program.csStartup.cs 中这样配置:

builder.Services.AddDbContext<YourContext>(options =>
    options.UseSqlServer(connectionString)
        .UseLazyLoadingProxies());

4. 使用示例

现在你可以像平常一样查询实体,导航属性会在访问时自动加载。

using var context = new YourContext();
var blog = context.Blogs.FirstOrDefault(b => b.Id == 1); // 此时不会加载 Posts

// 当访问 Posts 时,才会触发数据库查询
foreach (var post in blog.Posts)
{
    Console.WriteLine(post.Title);
}

注意事项

  • 延迟加载可能引发性能问题(N+1 查询),在循环中频繁访问导航属性时要小心
  • 如果上下文已释放(Disposed),再访问导航属性会抛出异常
  • 延迟加载不适用于静态属性或非 virtual 属性
  • 在序列化对象(如返回 JSON)时,注意避免意外触发加载或循环引用

基本上就这些。只要装对包、设对 virtual、开对选项,EF Core 的延迟加载代理就能自动工作。

以上就是C#中如何使用EF Core的查询延迟加载代理?如何启用?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号