EF Include 始终为第一个导航属性生成 INNER JOIN

2024-03-23

我正在使用代码优先方法并具有以下模型:

public class Person
{
    public int ID {get; set;}
    public string Name {get; set;}

    public int CurrentStationID {get; set;}
    public virtual Station CurrentStation {get; set;}

    public int CurrentTransportationID {get; set;}
    public virtual Transportation CurrentTransporation {get; set;}
}

我的控制器中的以下代码:

Models.Person model = myDBContext.Persons
                        .Include("CurrentStation")
                        .Include("CurrentTransportation")
                        .Where(p => p.ID == 1)
                        .FirstOrDefault();

即使一行带有(1, "测试名称", 0, 0)存在于数据库表“persons”中。

上面生成了一个 SQL 语句[...] INNER JOIN stations AS [...] LEFT JOIN transportations [...]。对于我的所有模型,它总是为第一个导航属性执行 INNER JOIN,无论基础表/类型是什么或我指定它们的顺序,它始终是第一个 Include()。

I do not想要对所有这些进行 INNER JOIN 但使用 LEFT JOIN,因为“CurrentStation”不需要位于数据库中。

EF为什么要这么做???我不明白,但我想明白。我没有在任何属性上指定 [Required] 属性,但它的行为就像我指定了一样。

不幸的是,没有 [Optional] 属性,并且通过 OnModelCreate 覆盖执行“HasOptional()”对我来说不是一个选择。


如果我没记错的话,为了允许属性是可选的或者在数据库意义上可以为空,您必须使该属性可以为空。因此,对于 CurrentStationId 属性,您可以尝试按如下方式声明它:

 public int? CurrentStationId {get;set;}

UPDATE This post https://stackoverflow.com/questions/4290802/entity-framework-include-with-left-join-is-this-possible可能对你的情况有一些帮助。

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

EF Include 始终为第一个导航属性生成 INNER JOIN 的相关文章

随机推荐

  • 如何在宽度可变的 div 中居中/对齐 Google 地图

    我在 div 中加载了 Google 地图 其宽度为页面的 100 通过 API 叠加层位于中心 地图应如下所示放置 问题是地图现在左对齐 我可以使用与页面宽度相对应的 LatLng 移动中心 但这对于一个简单的任务来说似乎需要大量工作 我
  • C# 为 Azure Function v3 全局设置大小写约定

    我是 Azure Functions 的新手 正在尝试将 NET Core API 转换为 Azure Functions 我面临的问题是如何全局设置响应命名约定 JSON 默认情况下 它是CamelCase但我想用PascalCase 我
  • 如何从 git 上的 filter-branch 命令中删除重复的提交?

    我有一个 Django 项目 我已经将其保密很长一段时间了 在我参与的项目的整个生命周期中settings py base settings py and secret settings py包含敏感信息的文件 现在我决定将代码开源 因为我
  • React Native - TextInput 的 onChange 与 onChangeText 之间的区别

    我不确定什么时候使用onChange vs onChangeText in a TextInput成分 我知道onChangeText接受更改后的文本作为回调中的参数 但这就是您要使用的原因onChangeText 因为您可以在回调中更新状
  • Array_merge 与 + [重复]

    这个问题在这里已经有答案了 当我使用array merge 使用关联数组我得到了我想要的 但是当我将它们与数字键数组一起使用时 键会发生变化 With 键被保留 但它不适用于关联数组 我不明白这是如何工作的 有人能给我解释一下吗 由于两个数
  • FabricJs - 通过 SVG 对象剪切区域

    我对 FabricJS 对象有疑问 我想创建一个剪切区域 svg 对象 它将剪切加载的图像 我在加载的图像上使用 ClipTo 方法 将其传递到剪切区域形状对象 SVG 中 但它不起作用 因为 SVG 不是 FabricJS 意义上的形状对
  • 设置 java URLConnection 的用户代理

    我正在尝试使用 Java 和 URLConnection 来解析网页 我尝试像这样设置用户代理 java net URLConnection c url openConnection c setRequestProperty User Ag
  • 在 dll 中嵌入 prolog 引擎

    我最近一直在开发一个嵌入 prolog 推理引擎的 C 应用程序 正如标题中所述 我现在尝试生成一个 DLL 而不是可执行文件 以便我可以在另一个项目中使用它 由于我是 DLL 开发的新手 我想我可以从一个小例子开始 我有3个文件 like
  • Spark DropDownList 自定义 ItemRenderer 问题

    我有一个 Spark DropDownList 它有一个自定义 ItemRenderer ItemRenderer 在创建时会检查标签文本 如果它符合特定条件 则标签文本颜色会发生变化 标签文本颜色正在改变 但它是错误的标签 似乎发生的情况
  • Git 子树合并策略或子树命令?

    我正在启动一个新的 Zend Framework 项目 我将在其中与设计师合作 我将使用 git 维护这个项目代码 通常设计师不会说 git 或任何编程语言 所以我想让他变得简单 否则我担心他根本不会使用 git 我的计划是给他一些 Git
  • 使用 Open Office SDK 2.0 将 PowerPoint 2007 另存为 PowerPoint 2003

    是否可以使用 Open Office SDK 2 0 将使用 OOXML 创建的 PowerPoint 演示文稿保存到 PowerPoint 2003 演示文稿 我知道如果您打开 2007 年文件并单击 另存为 您可以选择将其另存为 Pow
  • ASP.NET:空载下 CPU 使用率高

    几周以来我面临着一个巨大的问题 我有一个在 IIS7 W2008 SP1 下托管的 asp net 应用程序 每隔几个小时 当可能没有用户连接时 它就会开始消耗近 50 的 CPU 这是可以理解的 因为我们正在使用 Quartz net 来
  • C++ 中的可调用类对象:没有匹配的函数可用于调用“std::tuple::tuple()”

    我的代码由 2 个文件组成 main cpp and utils hpp 这些文件的内容如下 实用程序 hpp ifndef UTILITY HPP define UTILITY HPP include
  • 如何更改/修改 NSPopUpButton 的显示标题

    我想要一个NSPopUpButton显示与所选菜单项标题不同的标题 假设我有一个NSPopUpButton让用户选择货币列表 如何让折叠 关闭按钮仅显示货币缩写而不是所选货币的菜单标题 这是货币的全名 我想我可以重写子类中的绘制 NSPop
  • HTTPS 网站上的 Youtube Iframe

    我使用 https 包含了一个指向网站上 YouTube 视频的 iframe 虽然我使用 https 嵌入了 YouTube 视频 但当我单击播放时 视频会加载 http 文件 从而使浏览器安全图标 不安全 如何强制 youtube 仅加
  • Zxing扫描仪相机变焦

    我已经尝试解决这个问题3天了 但仍然没有找到答案 我想在通过 Zxing 扫描仪扫描二维码时向相机添加 ZOOM 构建 gradle implementation me dm7 barcodescanner zxing 1 9 8 Xml
  • 如何在 JPA 中捕获 OptimisticLockException

    我在这里读了几个关于OptimisticLockException与 JPA 一起使用 用于无状态会话 bean 它被抛出 但显然不是我期望的地方 这是我期望得到异常的代码 try productFacade edit product ca
  • 将 UIWebView 完整内容导出到 NSData? iPhone

    我想做的是得到UIWebView完整内容 文本 图像和 CSS 包含在一个小包中 我估计NSData将是最好的方法 或者还有其他更压缩的版本吗 可能已经晚了 无法对此作出回应 但我发现您可以从使用 NSCachedURLResponse 发
  • 使用鼠标右键单击时会选择 Datagrid WPF 上的禁用行

    我在 Datagrid WPF 中遇到一些问题 我有一个数据网格 每当用户为数据网格 itemSource 的绑定项分配值时 我想将单行的 IsEnabled 属性设置为 false 所以我通过 datagrid 样式触发器做到了
  • EF Include 始终为第一个导航属性生成 INNER JOIN

    我正在使用代码优先方法并具有以下模型 public class Person public int ID get set public string Name get set public int CurrentStationID get