如何使用此 Linq2Sql 减少数据库往返次数?

2024-04-27

我有以下 Linq2Sql,它为我的“SELECT”语句执行不止一次往返。我不知道为什么。首先是代码,然后是解释:-

from p in db.Questions
select new Models.Question
{
    Title = p.Title,
    TagList = (from t in p.QuestionTags
               select t.Tag.Name).ToList()
}

现在数据库是

问题 QuestionTags 标签

所以一个问题有一对多标签,中间有一个链接表。这样,我可以多次重复使用标签。 (如果有的话,我愿意接受更好的模式)。

这样做会执行 Linq2Sql 生成的以下 Sql 代码

SELECT [t0].[QuestionId] AS [ID], etc....  <-- that's the good one

.

exec sp_executesql N'SELECT [t1].[Name]
FROM [dbo].[QuestionTags] AS [t0]
INNER JOIN [dbo].[Tags] AS [t1] ON [t1].[TagId] = [t0].[TagId]
WHERE [t0].[QuestionId] = @x1',N'@x1 int',@x1=1

第二个 sql 块列出了 2x ..我认为这是因为第一个 sql 块返回两个结果,因此第二个 sql 块会针对第一个 sql 块的每个结果触发。

有什么方法可以让我使用这个 sql 语句而不是 1 + n,其中 n = 第一个查询的结果数?

Update:

我已经尝试过急切加载和延迟加载,但没有区别。

DataLoadOptions dataLoadOptions = new DataLoadOptions();
dataLoadOptions.LoadWith<Question>(x => x.QuestionTags);
dataLoadOptions.LoadWith<QuestionTag>(x => x.Tag);
db.LoadOptions = dataLoadOptions;

ToList() 肯定会阻碍你。您应该对整个查询执行 ToList()。

我认为你可以做的另一件事是使用“let”。我认为在这种情况下,它可以创建延迟执行并包含在表达式树中,但是YMMV。

from p in db.Questions
let Tags = (from t in p.QuestionTags
               select t.Tag.Name)
select new Models.Question
{
    Title = p.Title,
    TagList = Tags
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用此 Linq2Sql 减少数据库往返次数? 的相关文章

  • WatiN pressTab 不按 Tab

    有没有人找到了在 Internet Explorer 中使用 watiN 按 Tab 键的方法 您的意思是要按 Tab 键本身 还是只是单击看起来像 Tab 的 HTML 元素 对于后者 请对适当的元素 Div Span 等 使用 Clic
  • 允许 WPF Web 浏览器中的弹出窗口

    有没有办法允许在嵌入式 WPF WebBrowser 控件中弹出窗口 我没有找到别人的解决方案 也没有找到允许弹出窗口的COM接口 我不想更改用户注册表设置或使用类似的侵入方法 因为应用程序旨在通过 ClickOnce 分发 您可以通过处理
  • (可选)根据运行时值序列化属性

    从根本上讲 我想根据序列化时的值包含或省略生成的 Json 中的属性 更具体地说 我有一个类型 它知道是否已为其分配了值 并且我只想序列化该类型的属性 如果有 has是分配给它的东西 所以我需要在运行时检查该值 我试图让我的 API 更容易
  • 合并多个列表

    鉴于我有一个列表列表 List
  • 从网络位置读取文件

    我在网络驱动器上共享的文件夹中有一堆文件 我正在尝试将这些文件访问到我的代码中 但它给出了一个错误 用户代码未处理 System IO DirectoryNotFoundException Fname txtwbs Text Directo
  • IEnumerable.GetEnumerator() 和 IEnumerable.GetEnumerator()

    在 net框架中 有一个通用的IEnumerable
  • Linq:Select 和Where 之间有什么区别

    The Select and WhereLinq 中提供了方法 对于这两种方法 每个开发人员都应该了解什么 例如 何时使用其中一种而不是另一种 使用一种相对于另一种的优势等 Where 查找匹配的项目并仅返回匹配的项目 过滤 gt IEnu
  • 无法将方法组分配给 asp.net、linq、c# 中的隐式类型局部变量

    public void selectqueryasso CustomerOrderResult cso new CustomerOrderResult var a from as1 in ds orders from as2 in ds o
  • 使用 JSON.NET 反序列化一些 JSON

    我对 JSON 非常陌生 我需要解析 API 提供的一些内容 谷歌快速搜索出现了JSON NET http james newtonking com pages json net aspx 所以我现在尝试使用它将此 JSON 解析为列表对象
  • 将绝对路径转换为相对路径 C# [重复]

    这个问题在这里已经有答案了 可能的重复 获取相对于当前工作目录的路径 https stackoverflow com questions 703281 getting path relative to the current working
  • Socket.*Async 方法是线程化的吗?

    我目前正在尝试找出最小化 TCP 主服务器中使用的线程数量的最佳方法 以便最大限度地提高性能 由于我最近阅读了大量 C 5 0 的新异步功能 异步并不一定意味着多线程 这可能意味着将有限状态对象分成较小的块 然后通过交替与其他操作一起进行处
  • 如何以编程方式检索“Program Files”文件夹的实际路径? [复制]

    这个问题在这里已经有答案了 可能的重复 C 如何在 Windows Vista 64 位上获取程序文件 x86 https stackoverflow com questions 194157 c sharp how to get prog
  • 访问 SSIS 脚本任务静态构造函数中的可配置值

    我有一个 SSIS 包 其中包含需要第 3 方程序集的脚本任务 由于不允许我将此程序集放置在 SSIS 服务器上的 GAC 中 因此我在运行时在脚本任务的静态构造函数中绑定该程序集 这article https blogs msdn mic
  • 如何向 addrange select 语句添加异步“await”?

    我有一个这样的函数 public async Task
  • 使用 .NET 在 Windows 中创建弹出式“烤面包机”通知

    我正在使用 NET 并创建一个桌面应用程序 服务 当触发某些事件时 它将在桌面的一角显示通知 我不想使用常规的消息框 b c 那样会造成太大的干扰 我希望通知滑入视图 然后在几秒钟后淡出 我正在考虑一种类似于 Outlook 收到新邮件时发
  • 实体框架左外连接和分组抛出:ORA-00907:缺少右括号

    我在基于实体框架的数据访问中使用实体框架来定位多个数据库 我们是一个使用 Entity Framework 已有 2 年的团队 生成的代码与 sql server 2008 完美配合 现在 我们在将数据库迁移到 Oracle 11 Expr
  • 用户控件内所有控件均为空

    我有一个 UserControl 它使用 UserControl 以及其他控件 In the ascx文件我有以下代码
  • 操纵 setter 以避免 null

    通常我们有 public string code get set 如果最终有人将代码设置为 null 我需要避免空引用异常 我尝试这个想法 有什么帮助吗 public string code get set if code null cod
  • 如何添加重试以调用 Web 服务?

    我有一个应用程序调用使用 wsHttpBinding 的 Web 服务 我需要在连接超时等情况下对 Web 服务调用实现某种重试功能 执行此操作的最佳方法是什么 我已经阅读过有关 WS ReliableMessaging 的内容 但这不是
  • 如何访问窗口?

    我正在尝试使用其句柄访问特定窗口 即System IntPtr value Getting the process of Visual Studio program var process Process GetProcessesByNam

随机推荐

  • SwiftUI 列表内存问题,图像未从 RAM 中释放导致崩溃

    我正在将图像加载到 SwiftUI 列表中 当向下滚动太多图像时 RAM 会飙升并导致应用程序崩溃 为什么当用户向下滚动经过图像时图像不会被释放 我正在加载图像 如下所示 List allProducts id self product i
  • Django 外键多对一关系显示在模板上

    我正在尝试显示与公司 多对一 相关的工作机会 但我无法做到这一点 我已经尝试了很多循环 但我什至没有得到查询集 所以我一定做错了 但无法解决我做错的事情 My files 模型 py class Company models Model f
  • 将 div 的内容放在一起以便在 IE8 中打印

    给定以下 HTML 文档 我需要将 表标题 行保留在与 table 在 IE8 中打印时 尽管page break inside avoid 标题和表格之间仍然有一个分页符 我对此的理解表明应该避免分页并且整个div推至第 2 页 文档类型
  • 将选定的下拉列表值从视图传递到控制器

    我想从我的视图将参数 字符串 传递到我的控制器 该值应该是从视图的下拉列表中选择的值 单击按钮后会调用该方法 但在控制器中 该参数始终为空 在视图中 using Html BeginForm Send Overview FormMethod
  • iOS客户端的Youtube API如何获取Client Secret?

    我正在开发 iOS 应用程序 其中包含在 Youtube 上上传视频的功能 我遵循了一个示例项目yt direct lite ios https github com youtube yt direct lite iOS 该项目需要客户编号
  • rdf:seeAlso 和 rdfs:seeAlso 之间的区别

    有什么区别rdf seeAlso and rdfs seeAlso 当我可以使用时rdf seeAlso当我可以使用时rdfs seeAlso 你能举出一些例子吗 首先 请注意rdf and rdfs分别是常用于引用 RDF 语法和 RDF
  • pandas to_json() 多余的反斜杠

    我有一个包含电影数据的 csv 文件 我正在尝试将其重新格式化为 JSON 文件以在 MongoDB 中使用它 所以我将该 csv 文件加载到 pandas DataFrame 中 然后使用 to json 方法将其写回 DataFrame
  • 如何通过 PHP 使用 AWS SQS/SNS 作为推送通知队列来执行繁重的处理任务?

    我有一台在机架空间上运行的服务器 它托管一个 PHP Web 应用程序 PHP Web 应用程序将接受表单提交 然后需要根据表单字段条目执行任务 该任务 我们将其称为生成元数据任务 需要相当多的处理时间 我想知道如何允许表单提交直接保存到数
  • 如何将 BlockHound 添​​加到 Spring Boot 应用程序以检测阻塞调用?

    如何将 BlockHound 添 加到 Spring Boot 应用程序以检测阻塞调用 我没有找到任何 Spring Boot 应用程序的示例 https github com reactor BlockHound blob master
  • IMAPI界面可以选择刻录模式吗?

    我正在使用 IMAPIv2 在我的 C 项目中刻录 CD DVD 我意识到接口以 XA 格式 模式 2 刻录 我相信 XA 格式主要用于 ISO 网上很多关于IMAPIv2的例子都使用下面的方法来显示总磁盘空间和可用空间 discForma
  • Java ByteBuffer 到 String

    这是将 ByteBuffer 转换为 String 的正确方法吗 String k abcd ByteBuffer b ByteBuffer wrap k getBytes String v new String b array if k
  • Nest JS构建不会生成dist文件夹

    我已经用nest js实现了rest api项目 它在本地环境中运行良好 pm start 我想构建并部署它 但构建命令不会生成dust文件夹 以下是我的配置 tsconfig json compilerOptions module com
  • 错误不会阻止对象保存吗?

    我有一个虚拟属性 它从表单字段获取时间范围并将其分割 def time range time range unless time range empty t time range split to self start entry t 0
  • 如何在电子邮件正文中发送 R Markdown 报告?

    更新 布兰登 贝特尔森的回答 布兰登的答案产生以下输出 它不会像 Rstudio 那样生成漂亮的表格或突出显示代码 并且它会在某些带有 unicode 的 html 文件上崩溃 因此我没有使用它来自动化我的电子邮件报告 我目前的做法是用Rs
  • 为什么 PHP 不替换字符串中的变量? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我不明白为
  • Android getExternalFilesDir 与 getFilesDir() 对于大文件

    getExternalFilesDir 和 getFilesDir 之间的区别对我来说很清楚并且有很好的解释here https developer android com reference android content Context
  • 输入类型=“文件”接受=“图像/*”在手机间隙不起作用?

    我尝试使用 HTML PhoneGap 2 6 0 制作一个 Android 应用程序 它支持
  • parse.com 用户注册无法正常工作的问题

    使用 parse com 和 javaScript SDK 1 6 7 下面的代码用于在我的网站上注册新用户 它有效 真正奇怪的是 如果我注册一个用户 他们就会登录并转发到预期的页面 如果我随后将它们注销并立即注册另一个用户 则它们是在后端
  • 如何旋转矢量?

    如果我有 1 0 我旋转它90 degrees 1 2PI radians 我应该得到 0 1 我该如何实现这一目标 我在看这一页 http en wikipedia org wiki Rotation matrix并实现了这个 var r
  • 如何使用此 Linq2Sql 减少数据库往返次数?

    我有以下 Linq2Sql 它为我的 SELECT 语句执行不止一次往返 我不知道为什么 首先是代码 然后是解释 from p in db Questions select new Models Question Title p Title