gpt4 book ai didi

c# - 使用 LINQ to Entity Framework 从多个不相关的表中选择数据

转载 作者:行者123 更新时间:2023-11-30 17:50:28 24 4
gpt4 key购买 nike

假设我提前知道我正在处理的请求将要求我从 5 个不相关的不同表中提取数据以填充页面的不同部分。

有没有办法将这些组合成一个返回 5 个不同数据集的数据库调用,这样效率会更高吗?

类似于:

var all_data = context.Select(a => new {
dataset1 = context.Table1.Where(b => b.XXX == XXX),
dataset2 = context.Table2.Where(b => b.XXX == XXX),
dataset3 = context.Table3.Where(b => b.XXX == XXX),
dataset4 = context.Table4.Where(b => b.XXX == XXX),
dataset5 = context.Table5.Where(b => b.XXX == XXX),
});

(显然上面的不起作用)然后我可以做任何我需要的事,例如:

GridView1.DataSource = all_data.dataset1;
GridView1.DataBind();
GridView2.DataSource = all_data.dataset2;
GridView2.DataBind();

我觉得这比向数据库发送 5 个单独的调用更有效,但不知道该怎么做。欢迎提出想法。

最佳答案

不要这么快就说“显然这行不通”。我认为它确实有效。它应该在单个查询中执行您想要的操作。我明白为什么你会认为它不起作用。它看起来确实像单独的查询,因此是单独的往返。但我正在阅读的其他示例(以及我自己的经验)似乎表明它知道如何将其组合成一个查询。

参见: Subquery with Entity Framework

还有:尝试在您的代码中放置一个断点并使用调试器检查生成的 IQueryable (all_data)。它应该具有组合成单个查询的 Sql。

如果我在这里错了,我当然想自己了解更多。如果这不起作用,那么 Union() 肯定会起作用。虽然它会有点难看。

关于c# - 使用 LINQ to Entity Framework 从多个不相关的表中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20730555/

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