实体框架代码优先延迟加载

2023-12-05

我有两个对象类

public class User
{
    public Guid Id { get; set; }
    public string Name { get; set; }

    // Navigation
    public ICollection<Product> Products { get; set; }
}

public class Product
{
    public Guid Id { get; set; }

    // Navigation
    public User User { get; set; }
    public Guid User_Id { get; set; }

    public string Name { get; set; }
}

当我使用 dataContext 加载用户时,我得到的产品列表为空(这是可以的)。

如果我将“虚拟”关键字添加到产品列表中,

public virtual ICollection<Product> Products { get; set; }

当我加载用户时,我也会得到产品列表。

为什么会发生这种情况?我认为“虚拟”关键字用于不加载实体,除非您明确这一点(使用“包含”语句)

我想我全错了


这是错误的

“virtual”关键字用于不加载实体,除非您 显式 this(使用“include”语句)

延迟加载意味着当您第一次访问集合或导航属性时,实体将自动加载,并且这将透明地发生,就好像它们始终与父对象一起加载一样。

当您指定要查询的属性时,使用“include”会按需加载。

的存在virtual关键字仅与延迟加载相关。virtual关键字允许实体框架运行时为实体类及其属性创建动态代理,并支持延迟加载。如果没有虚拟,将不支持延迟加载,并且集合属性上会出现空值。

事实上,您在任何情况下都可以使用“include”,但如果没有延迟加载,它是访问集合和导航属性的唯一方法。

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

实体框架代码优先延迟加载 的相关文章

随机推荐

  • 复杂的 Mongoose 过滤查询

    我正在构建一个允许用户使用侧边栏过滤结果的网站 他们选择的标准越多 搜索结果就应该越具体 见附图 用户可以选择与他们要查找的内容相匹配的过滤器 复选框 我为此使用 MongoDB 我的架构如下 brandName type String r
  • Raspberry pi 4 用 java 控制 GPIO

    我想用java控制我的树莓派4上的16 2液晶显示屏 问题是Pi4J 用java修改gpios的解决方案没有更新到pi4 还有其他解决方案吗 当我启动程序时出现此错误 pi raspberrypi desktop gpio sudo sta
  • 如何在 Yii 中为单个日期属性设置多个字段(D/M/Y)?

    我想将用户出生日期存入我的数据库 表中有一个字段称为dob 当我创建模型和 CRUD 时 它生成了文本字段dob一如既往 但我想创建三个输入 多年 几个月来 和日期 所以我的问题是如何在模型的表单中添加额外的输入 我正在考虑向模型类添加新属
  • iPhone可以与JMS通信吗?

    只是想知道是否有人知道如何在 iPhone 和 iPhone 之间发送 接收 XML 消息Java消息服务 Regards 有几种方法可以实现这一点 要么通过 MQ 附带的 HTTP 桥 我自己已经这样做了 要么使用新的 MQTT 支持 您
  • MKMapView持续监控航向

    我在位于我的顶部的图层中渲染一些内容MKMapView 除了旋转之外 整个事情都运转良好 当用户旋转地图时 我需要能够旋转我在自己的图层中渲染的内容 我发现的标准答案是使用 NSLog heading f self mapView came
  • mozilla 和 safari 的仪表栏样式

    I am using the following css on my meter bars but somehow the styling does not work on safari see below screenshots I am
  • 如何停止 while 循环

    这个 while 循环永远不会结束 例如 当我输入错误的密码时 它会一遍又一遍地进入 密码错误 部分 Logo inFile open UsernamePassword txt if inFile cout lt lt Unable to
  • 在http标头中设置身份验证令牌

    我一直在关注关于如何设置身份验证令牌的railscasthttp railscasts com episodes 352 securing an api view asciicast 我已经很好地设置了我的应用程序 它使用authentic
  • 获取字符串的每个组合

    我有一个组合学作业 涉及从特定的字符串组合中获取长度小于或等于 6 的每个单词 在本例中 它是 S a ab ba 教授刚刚开始列出它们 但我认为用程序来解决会更容易 唯一的问题是我无法得到一个好的算法来实际计算每个可能的选项 如果有人可以
  • Onchange 事件运行不佳

    我创建了以下 html 页面
  • 必须使用 fibo_ 实例作为第一个参数调用未绑定方法 f() (改为使用 classobj 实例)

    在 Python 中 我尝试在类中运行一个方法 但出现错误 Traceback most recent call last File C Users domenico Desktop py main py line 8 in
  • 将 sqlite3 db 关联到 iPhone 应用程序

    我正在尝试将 SQLite3 数据库文件与我们的应用程序关联起来 以便可以轻松地从电子邮件打开备份的数据库 然而 以下内容似乎不起作用 因为 邮件 仍然无法识别该文件 在 iPad 和 iPhone 4 上
  • Springfox swagger - 没有 Spring Boot jersey 和 gradle 的 api 文档

    我有一个带有 jersey 和 gradle 的 spring boot 应用程序 我正在尝试使用 springfox 自动生成 API 文档 我已按照此处的步骤操作 http springfox github io springfox d
  • 你能用 pty 做什么?

    阅读了各种资源 包括http www linusakesson net programming tty 我对伪终端的结构和使用仍然很困惑和好奇 在 Linux 终端 bash 不是 tty 中 我们有三个流 stdin stdout std
  • C++ 中初始化变量的 = 和 {} 语法之间的差异

    我读过相当多的 C 代码 并且遇到过两种初始化变量的方法 方法一 int score 0 方法二 int score 我知道int score 会将分数初始化为 0 因此int score 0 这两者有什么区别 我读过了初始化 括号与等号但
  • 字符串生成器与列表

    我正在读取包含数百万行的多个文件 并且正在创建具有特定问题的所有行号的列表 例如 如果特定字段留空或包含无效值 所以我的问题是 跟踪可能超过一百万行的数字列表的最有效的日期类型是什么 使用字符串生成器 列表或其他东西会更有效吗 我的最终目标
  • 如何保护共享工作簿中的工作表?

    我有一个将在多个用户之间共享的工作簿 将运行宏以在 Excel 工作表中输入来自用户表单的数据 该工作表需要受到保护 以便用户无法对其进行编辑 我有 ws Unprotect 我的宏代码 ws Protect UserInterfaceOn
  • 有没有办法降低禁用按钮上图像的饱和度?

    有没有办法可以降低禁用按钮中图像的饱和度 例如 ICommand CanExecute false 或者我需要使用单独的图像 样式 触发器 我为此使用了一种特殊的样式 当按钮被禁用时 它会降低图像的不透明度 是的 如果按钮绑定到命令 这也有
  • initFields(scales = scales) 中的错误:找不到函数“initRefFields”

    我的代码中有一个 ggplot2 绘图函数 当文件作为 R 代码来源时 该函数工作正常 但是当我将此函数包含在 R 包中时 当然 我在包的描述和命名空间文件中包含 ggplot2 和比例 我得到以下内容错误 Error in initFie
  • 实体框架代码优先延迟加载

    我有两个对象类 public class User public Guid Id get set public string Name get set Navigation public ICollection