实体框架 - 包含在子查询中? - 第2部分

2024-04-16

我不确定这是否是正确的做法,我确信有人会告诉我是否正确。

我问了一个问题(实体框架 - 包含在子查询中? https://stackoverflow.com/questions/1662760/entity-framework-include-in-sub-query)今天晚上早些时候,得到了很好的回答并解决了我的问题。但是,我认为可能有更好的方法,所以我要重新问这个问题,但略有不同。

假设我有 3 张表:

餐厅 1.....M 菜单类别 1.....M 菜单项 我有一个 L2E 查询,如下所示:

餐厅 = context.Restaurant .Include(r => r.MenuCategory) .FirstOrDefault(r => r.RestaurantId == resaurantId); 这在一定程度上有效,但它只预加载菜单类别。

我真正想做的是:

Restaurant = context.Restaurant
.Include(r => r.MenuCategory)
.Include(r => r.MenuCategory.MenuItems)
.FirstOrDefault(r => r.RestaurantId == resaurantId);

但显然这是不可用的,因为 r.MenuCategory 是一个可枚举的

...解决方法是使用标准符号:

context.Restaurant.Include("MenuCategory.MenuItems");

...但这不是强类型的。这个问题是关于寻找一个强类型 answer

这是当前的扩展方法:

public static ObjectQuery<T> Include<T>(this ObjectQuery<T> query, Expression<Func<T, object>> path)
{
    // Retrieve member path:  
    List<PropertyInfo> members = new List<PropertyInfo>();
    EntityFrameworkHelper.CollectRelationalMembers(path, members);

    // Build string path:  
    StringBuilder sb = new StringBuilder();
    string separator = "";
    foreach (MemberInfo member in members)
    {
        sb.Append(separator);
        sb.Append(member.Name);
        separator = ".";
    }

    // Apply Include:  
    return query.Include(sb.ToString());
}

如何对其进行调整以允许强类型形式:

context.Restaurant.Include("MenuCategory.MenuItems");

我有一个提示可以实现这一点:技巧 28 - 如何实施急切加载策略 http://blogs.msdn.com/alexj/archive/2009/07/25/tip-28-how-to-implement-include-strategies.aspx

我认为使用了一个漂亮的技巧。

Alex

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

实体框架 - 包含在子查询中? - 第2部分 的相关文章

  • C# 创建函数队列

    我写了一个名为 QueueManager 的类 class QueueManager Queue functionsQueue public bool IsEmpty get if functionsQueue Count 0 return
  • 将图像文件从网址复制到本地文件夹?

    我有该图像的网址 例如 http testsite com web abc jpg http testsite com web abc jpg 我想将该 URL 复制到 c images 中的本地文件夹中 而且当我将该文件复制到文件夹中时
  • 是否允许将类模板类型参数键入相同的名称?

    这似乎可以在 MSVC 中按预期编译甚至工作 但它是合法的 C 代码吗 它是否能保证执行此处所期望的操作 即将模板类型导出到结构体的同名用户 template
  • 用户控件内所有控件均为空

    我有一个 UserControl 它使用 UserControl 以及其他控件 In the ascx文件我有以下代码
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • Paradox 表 - Oledb 异常:外部表不是预期的格式

    我正在使用 Oledb 从 Paradox 表中读取一些数据 我遇到的问题是 当我将代码复制到控制台应用程序时 代码可以工作 但在 WinForms 中却不行 两者都以 x86 进行调试 我实际上只是复制代码 在 WinForms 应用程序
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 序列化和反序列化 Visual Studio 解决方案文件 - 或以编程方式编辑?

    我想以编程方式添加和删除项目 解决方案文件夹和其他项目 例如解决方案的资源文件 但我不确定最好的方法是什么 对于那些不知道的人 高度简化 解决方案文件 sln 通常如下所示 Microsoft Visual Studio Solution
  • 指向字节数组的指针

    由于 Misra C 的要求 我的一位同事想要使用指针声明 但我遇到了一些问题 Misra 安全关键指南 不会让我们纯粹的程序员使用指针 但会让我们对数组字节进行操作 他打算获取一个指向字节数组的指针 因此我们不会在堆栈上传递实际的数组 T
  • 无法加载文件或程序集“EntityFramework,版本=6.0.0.0”

    我究竟做错了什么 我该如何解决这个问题 我有一个包含多个项目的解决方案 它是一个 MVC NET 4 5 Web 应用程序 在调试模式下启动后调用其中一个项目时 出现此错误 导致此错误的项目具有以下参考 两个都是版本6 0 0 0 应用程序
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 允许使用什么类型的内容作为 C 预处理器宏的参数?

    老实说 我很了解 C 编程语言的语法 但对 C 预处理器的语法几乎一无所知 尽管我有时在编程实践中使用它 所以问题来了 假设我们有一个简单的宏 它扩展为空 define macro param 可以放入宏调用构造中的语法有哪些限制 调用宏时
  • 使用 foreach 循环和 XmlNodeList C# 将新节点附加到节点列表

    目前我处理的是这样的XML类型 XML FILE http 20drive google com open id 0By5BxgNi9eGcRldxcEZNU0FDTzQ 参考XML文件 我想检查一个节点 如果找不到该节点 我必须将该节点附
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 纯虚函数可能没有内联定义。为什么?

    纯虚函数是那些虚函数并且具有纯说明符 0 第 10 4 条第 2 款C 03 的内容告诉我们什么是抽象类 顺便说一句 如下 注意 函数声明不能 同时提供纯说明符和定义 尾注 示例 struct C virtual void f 0 ill
  • 如何将对象转换为传递给函数的类型?

    这不会编译 但我想做的只是将对象转换为传递给函数的 t public void My Func Object input Type t t object ab TypeDescriptor GetConverter t ConvertFro
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void
  • 如何设置 CMake 与 clang 交叉编译 Windows 上的 ARM 嵌入式系统?

    我正在尝试生成 Ninja makefile 以使用 Clang 为 ARM Cortex A5 CPU 交叉编译 C 项目 我为 CMake 创建了一个工具链文件 但似乎存在错误或缺少一些我无法找到的东西 当使用下面的工具链文件调用 CM
  • c# 模拟 IFormFile CopyToAsync() 方法

    我正在对一个异步函数进行单元测试 该函数将 IFormFile 列表转换为我自己的任意数据库文件类列表 将文件数据转换为字节数组的方法是 internal async Task

随机推荐

  • 构建一个完整的在线支付网关,如 Paypal [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 所以这个问题不是关于将现有的支付网关集成到我的网站中 这更多的是一个架构问题 我想建立一个类似于Paypal 的系统 现在我知道 Pa
  • 如何使用 Firebase 函数向用户发送 FCM?

    Firebase 目前已推出Firebase 功能添加服务器端代码 Firebase 功能 https firebase google com docs functions 我想知道当数据库发生某些变化时是否可以通过这些函数调用 FCM 通
  • DB2 将 ISO 8601 时间戳字符串转换为 DB2 时间戳

    我有一个要求 我需要获取两个 ISO 8601 时间戳格式的字符串 并且必须比较它们并获取它们的最大时间戳 字符串采用以下格式 2014 06 11T16 45 45Z 为了进行比较 我需要将它们转换为 DB2 时间戳 然后进行比较 问题出
  • 获取 Roslyn 中类之间的依赖关系

    我使用 Roslyn 成功获取了项目之间的依赖关系 现在我想获取类之间的依赖关系 类似于 Visual Studio Enterprise 中的代码映射功能 这是我的代码 部分是我想象我能得到一些东西的地方 不过 我对 Roslyn API
  • VBA用于在文本溢出时缩小PowerPoint中的字体

    我正在尝试为 PowerPoint 文件找到一个宏 该文件是通过 CAT 工具进行语言转换后导出的 在某些语言对中 由于语言长度的差异 翻译的内容将无法放入源文件文本框中 因此 翻译和导出的 PowerPoint 文件包含多个形状 文本框
  • 检测是否安装了 SQL Server Compact Edition 3.5 SP2 x64?

    我正在构建一个安装程序 并且想要引导 SQL Server Compact Edition 3 5 SP2 问题是我正在寻找注册表项HKLM SOFTWARE Microsoft Microsoft SQL Server Compact E
  • 如何向文本框添加按钮?

    我正在尝试制作一个右侧带有按钮的文本框 我的代码 public partial class TextBoxButton TextBox Category Button Description Button in textbox public
  • SQL Server 中的 DECODE() 函数

    SELECT PC COMP CODE R PC RESUB REF DECODE PC SL LDGR CODE 02 DR CR PC DEPT NO DEPT PC DEPT NO PC SL LDGR CODE PC SL ACNO
  • Jquery mobile 中的选择选项出现问题

    我有一个表格 其中包含输入文本以及选择选项和按钮 单击按钮时将克隆表格行 除了选择选项之外 一切都工作正常 克隆表行后 选择选项不会显示我选择的内容 这是 JsFiddlehttp jsfiddle net aravinth Ad22d h
  • Android 中相机捕获图像的图像叠加

    我需要用相机拍照 同时在相机视图顶部显示叠加图像 拍照后 我需要保存用户在拍照时看到的内容 有人可以建议我吗 请 public void onPictureTaken byte data Camera camera Bitmap camer
  • 检查orientdb中是否存在类

    如何检查东方数据库中是否存在类 如果它不存在于数据库中 我需要创建它并插入一条记录 如果存在 我需要插入该记录 我需要使用 JAVA 做同样的事情 您可以使用以下语句通过 SQL 检索架构信息 select expand classes f
  • 如何读取 Windows 特定扩展名

    在 OpenGL superible 中 示例说我可以通过以下方式读取 Windows 特定扩展 Type defined in the book as char but that is not what glGetString retur
  • C# 在发布模式下运行时,调试语句会被编译出来吗?

    使用说似乎是理想的 就可读性而言 Debug WriteLine写入输出而不是大量 if DEBUG声明 当程序在发布模式下编译时 所有开销都用Debug WriteLine消失就好像它不存在一样 或者该函数仍然被调用 但内部没有执行任何操
  • 使用“xts”包中的“to.weekly”函数导致错误的周末结束日期

    我有一个非常奇怪的问题 我正在使用to weekly and to period函数来转换每日xts反对每周数据 在大多数情况下 我将周末结束日期设为星期五 day of week函数将返回 5 例如 2010 01 08 2011 02
  • 如何从网络共享调试 Visual Studio 2010 中的解决方案?

    我最近购买了一台新的 Mac 笔记本电脑 并在 Parallels 虚拟机中运行 VS2010 它对我来说基本上运行良好 但我在调试特定项目类型时遇到了一些问题 这与项目是通过网络共享访问的事实有关 测试项目无法运行 因为测试运行程序无法加
  • 使用 Access 2007 中窗体上的按钮打开外部文件

    我正在为我的部队创建一个数据库 我在陆军 我需要一个按钮 单击该按钮即可启动文件 该文件是一个 xfdl 文件 用于 PureEdge 程序中的军事表格 这是否可能以及我将如何去做 我已经尽我所能地搜索了它 但似乎我的 Google Fu
  • 在Linux下,C++源代码如何成为可执行文件或静态/动态库。以及程序运行时如何加载到内存中

    我知道源代码可以编译并链接到共享 静态库或 ELF 可执行文件 当程序运行时 它会加载到内存中并根据ELF格式创建一个进程映像 但我不确定程序如何加载共享库 链接器如何在外部库中查找符号以及 a 存档如何工作 如果程序在 64 位操作系统上
  • Android onFocusChange 被多次触发

    我正在使用列表适配器 扩展 SimpleCursorAdapter 来填充一些数据 我在bindView 中调用View SetOnFocusChangeListener 其中我将侦听器附加到所需的EditText 问题是该事件被触发 4
  • Java JList 滚动到所选项目

    我有一个JList里面有很多项目 其中一个被选中 我想滚动到此中选定的项目JList 因此用户可以快速查看选择了哪个项目 我怎样才能做到这一点 String data one two three four AND A LOT MORE JL
  • 实体框架 - 包含在子查询中? - 第2部分

    我不确定这是否是正确的做法 我确信有人会告诉我是否正确 我问了一个问题 实体框架 包含在子查询中 https stackoverflow com questions 1662760 entity framework include in s