gpt4 book ai didi

mysql - 创建对象时减少对数据库的调用次数?

转载 作者:行者123 更新时间:2023-11-29 17:20:22 25 4
gpt4 key购买 nike

所以,我在 sql 方面并不是新手,但我仍在学习。情况是我有以下代码:

Thread thread = context.Threads
.Where(t => t.ThreadId == id)
.Include(p => p.Posts)
.FirstOrDefault();

if (thread != null) {

foreach (var item in thread.Posts) {
UserProfile profile = new UserProfile();
profile.UserId = item.CreatedBy;
profile.UserName = userManager.FindById(profile.UserId).UserName;
item.UserProfile = profile;
}
}

我的代码工作没有问题,它将所有相关帖子获取到线程,但是具有 50 个帖子的线程将进行 50 次查询来创建用户配置文件,这似乎非常低效。无论如何,我可以改进它以减少查询并仍然为每个帖子创建一个用户配置文件吗?

我已经禁用了延迟加载(如果这有什么区别的话)。

最佳答案

非常感谢大家的快速解答!他们为我提供了一些关于如何处理数据库查询的良好知识。根据@Raymond 和@Panagiotis 的见解,我将 UserProfile 类映射到存储用户 ID 和名称的表。此外,我向 Post 类添加了一个 UserProfile。

然后将我的查询更改为以下内容并删除 foreach 循环:

Thread thread = context.Threads
.Include(p => p.Posts)
.Include(p => p.Posts.Select(e => e.UserProfile))
.Where(t => t.ThreadId == id)
.FirstOrDefault();

然后,它查询 UserProfiles 并将其映射到 Post.UserProfile,并将 N 次调用减少到 1。耶!

关于mysql - 创建对象时减少对数据库的调用次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51285273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com