Linq-To-SQL 多次访问数据库

2023-12-30

我试图通过在一次数据库访问中包含子属性来提高 Linq-to-SQL 查询的效率。我首先尝试各种 linq 查询来完成此任务。查询变得越来越复杂,所以我尝试了 LoadWith() 选项:

我的 DAL 类的构造函数设置 LoadWith() 设置:

public TrackerJobData()
{
    dataLoadOptions = new DataLoadOptions();

    dataLoadOptions.LoadWith<TrackerJobRecord>(x => x.SpecBarcodeRecords);
    dataLoadOptions.LoadWith<TrackerJobRecord>(x => x.TrackerJobEquipmentTriggerRecords);
    dataLoadOptions.LoadWith<TrackerJobRecord>(x => x.EtaRecord);

    this.Database.LoadOptions = dataLoadOptions;
}

这是我正在使用的查询:

public TrackerJob GetItem(int trackerJobId)
{
    TrackerJobRecord record =
        (from trackerJob in this.Database.TrackerJobRecords
         where trackerJob.TrackerJobId == trackerJobId
         select trackerJob).FirstOrDefault();

    return record.Map();
}

当我调试并F10仅在 linq 查询上(不是返回),我在 SQL Profiler 中得到以下输出:

请原谅我对 SQL Profiler 的无知,但是突出显示的三行是否意味着从客户端(我的代码)到服务器有 3 次往返?如果是这样,为什么? SQL Server 是否会执行多个 sp_executesql 调用one trip?

既然我认为 LoadWith() 会消除多次调用,那么我做错了什么?

EDIT

以下是 SQL Profiler 中的三个语句:

exec sp_executesql N'SELECT TOP (1) [t0].[TrackerJobId], [t0].[Name], [t0].[EtaId], [t0].[SamplingProcessorTypeId], [t0].[Description], [t0].[LastModifiedUser], [t0].[LastModifiedTime], [t0].[VersionNumber], [t0].[Active], [t0].[Archived], [t1].[EtaId] AS [EtaId2], [t1].[EtaNumber], [t1].[Title], [t1].[State], [t1].[DateInitialized], [t1].[EtaOriginatorId], [t1].[Quantity], [t1].[Ehs], [t1].[Ship], [t1].[InternalUse], [t1].[DateClosed], [t1].[ExperimentId], [t1].[Disposition], [t1].[TestType], [t1].[LastModifiedUser] AS [LastModifiedUser2], [t1].[LastModifiedTime] AS [LastModifiedTime2], [t1].[VersionNumber] AS [VersionNumber2]
FROM [AutoTracker].[TrackerJob] AS [t0]
INNER JOIN [Global].[Eta] AS [t1] ON [t1].[EtaId] = [t0].[EtaId]
WHERE [t0].[TrackerJobId] = @p0',N'@p0 int',@p0=17

exec sp_executesql N'SELECT [t0].[SpecBarcodeId], [t0].[TrackerJobId], [t0].[EquipmentId], [t0].[StartTime], [t0].[EndTime], [t0].[LastModifiedUser], [t0].[LastModifiedTime], [t0].[VersionNumber]
FROM [AutoTracker].[SpecBarcode] AS [t0]
WHERE [t0].[TrackerJobId] = @x1',N'@x1 int',@x1=17

exec sp_executesql N'SELECT [t0].[TrackerJobId], [t0].[EquipmentId], [t0].[LastModifiedUser], [t0].[LastModifiedTime], [t0].[VersionNumber]
FROM [AutoTracker].[TrackerJobEquipmentTrigger] AS [t0]
WHERE [t0].[TrackerJobId] = @x1',N'@x1 int',@x1=17

Linq-2-sqlLoadWith不支持多个 1:N 关系。

http://weblogs.asp.net/zeeshanhirani/archive/2008/08/11/constraints-with-loadwith-when-loading-multiple-1-n-relationships.aspx http://weblogs.asp.net/zeeshanhirani/archive/2008/08/11/constraints-with-loadwith-when-loading-multiple-1-n-relationships.aspx

使用多个 DataLoadOptions 的 Linq2SQl 预加载 https://stackoverflow.com/questions/644576/linq2sql-eager-load-with-multiple-dataloadoptions

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linq-To-SQL 多次访问数据库 的相关文章

随机推荐

  • 如果操作未经过身份验证,expressJS 呈现登录引导模式

    我正在编写一个expressjs ejs应用程序 它使用Twitter Bootstrap 3作为网页 我使用 Bootstrap Modal 进行登录 我已将模式包含在标题部分中 因此它可用于每个网页 但是 如果用户尚未登录 则需要先进行
  • 如何捕获Kafka-Spring中的反序列化错误?

    我正在启动一个使用 kafka 消息的应用程序 我跟着Spring文档 https docs spring io spring kafka docs 2 2 4 RELEASE reference error handling deseri
  • Android-L CardView 视觉触摸反馈

    谁能向我解释一下如何在 CardView 中实现 Google I O 2014 上演示的一些视觉触摸反馈 这是我在 XML 中使用 CardView 的方式 可能缺少一些小东西 所以我只是想知道是否有人可以帮助我
  • 导入其他依赖项需要的依赖项版本[重复]

    这个问题在这里已经有答案了 我有两个箱子X and Z我想同时使用但是X依赖于取决于Z在某些特定版本上 例如 mongodb依赖于tokio 0 2 而我使用的是tokio 0 3 X不再出口Z所以我 认为 必须手动指定Z in Cargo
  • 使用 Json.Net 反序列化,将子对象反序列化为保存 json 的 string/similar?

    我正在尝试使用 Json 创建一个配置文件 该文件将保存各种类型对象的配置 考虑这个文件 cameras type Some Namespace CameraClass assembly Some Assembly configuratio
  • 更改主页按钮的长按功能

    我正在寻找 Android 技巧 来更改长按主页按钮的功能 目前 长按主页按钮打开任务管理器 相反 我希望长单击充当短单击 这意味着将我们带到默认启动器的主页 理想情况下 这个技巧适用于所有 Android 版本 但如果它仅适用于 2 3
  • 通过 C# 在 excel 中使用模板

    作为我正在生成的 C 程序的一部分 我需要生成 1 个工作簿 其中包含 2 个不同的工作表和第 3 个可以多次生成的工作表 最有效的方法是什么 我已经研究过使用模板 尽管我不确定如何重复某些工作表 同时只显示其他工作表一次 任何帮助或建议将
  • 用于从视频创建小 gif 的 Lib/API?

    我想从现有视频创建 GIF 我搜索了相关问题 但没有找到任何可以帮助我的链接 我一直在寻找任何可以帮助我从视频创建位图的库或 API 然后我将再次从该位图创建 GIF 或直接从视频创建 GIF 是否有任何库或 API 可以从视频中捕获位图序
  • 打字稿“元素类型上不存在属性”

    我将开始我的 Typescript 之旅 所以我有video在我的 Html 和中标记 ts将这些行归档 class KomakhaPlayer private container private video Element this co
  • 使用 python mechanize 通过 NTLM 身份验证登录页面

    我想使用 mechanize 登录页面并检索一些信息 但是我尝试验证它只是失败并显示错误代码HTTP 401 如下所示 r br open http intra File bui e mechanize py line 203 in ope
  • 将包含字符串的 Pandas 系列转换为布尔值

    我有一个名为df as Order Number Status 1 1668 Undelivered 2 19771 Undelivered 3 100032108 Undelivered 4 2229 Delivered 5 00056
  • JPA - 定义@Entity对象的多个jar

    我们正在以非常模块化的方式使用 Spring Hibernate 和 Maven 开发 Web 应用程序 有定义数据访问和查看特定内容的核心项目 然后有定义逻辑和实体的模块 Entity 然后是定义控制器和视图的 Web 应用程序 现在我们
  • 使用 r 中的 if 语句填充列

    我有一个非常简单的问题 目前正在努力解决 如果我有一个示例数据框 a lt c 1 5 b lt c 1 3 5 9 11 df1 lt data frame a b 如何创建一个新列 c 然后使用 b 列上的 if 语句填充该列 例如 c
  • 多个模态视图控制器在旋转后将基本模态更改为全屏

    这个问题困扰了我很长一段时间 我对此做了很多研究 但找不到答案 我第一次在这里发帖 如有错误请指正 原谅 环境 iPad iOS 6 0 问题 旋转后基本模式视图更改为全屏 描述 我当前正在运行一个全屏应用程序 显示模式视图控制器 从显示的
  • 无法按日期/时间在 Waterline 中查找记录

    如何比较 sails js 模型中的日期时间 这就是我所做的 但没有运气 var date moment format YYYY MM DDTHH mm ss SSS Z Game find where active true start
  • 重写 jQuery .val() 函数?

    有没有办法轻松覆盖 jQueryval 功能 我想覆盖它的原因是我想在每次为元素设置值时添加一些处理 我不想制作另一个自定义值设置器 例如myVal 您可以存储对原始内容的引用val函数 然后覆盖它并进行处理 然后使用call 使用正确的上
  • 如何在 Google Cloud 功能内使用 Google Sheets API

    我正在尝试 Google 的云功能服务 我想阅读和编写 Google 电子表格 但似乎找不到任何示例或方法来执行此操作 我的问题源于 Google 云函数的示例 javascript 是 exports helloWorld functio
  • 二进制序列化和 XML 序列化之间有性能差异吗?

    就解析 序列化 反序列化 和通过网络发送数据包而言 是否有任何好的估计二进制和 xml 序列化之间的性能差异 Nope 这在很大程度上取决于 XML 文档本身内部的数据类型 如果您有大量结构化数据 XML 的开销将会很大 例如 如果您的数据
  • JSLint 抱怨重新定义 undefined

    undefined https developer mozilla org en JavaScript Reference Global Objects undefined从技术上讲可以重新定义 因此它不是保留字 因此 我通常在匿名函数中编
  • Linq-To-SQL 多次访问数据库

    我试图通过在一次数据库访问中包含子属性来提高 Linq to SQL 查询的效率 我首先尝试各种 linq 查询来完成此任务 查询变得越来越复杂 所以我尝试了 LoadWith 选项 我的 DAL 类的构造函数设置 LoadWith 设置