EF Code First 延迟加载不起作用

2024-03-25

我首先使用 EF6 的代码,但似乎无法让延迟加载工作。预加载工作正常。我有以下课程:

public class Merchant : User
{
    ...

    public virtual ICollection<MerchantLocation> MerchantLocations { get; set; }
}

public class MerchantLocation : BaseEntity
{
    ...

    public int MerchantId { get; set; }
    public virtual Merchant Merchant { get; set; }       
}

public class User : BaseEntity
{
    ...
}

public class BaseEntity
{
    ...

    public int Id { get; set; }
}

我通过以下代码测试了位置的延迟加载(失败):

public void Test_Lazy_Loading() {
    using (var context = new MyDbContext()) {
        var merchant = context.Users.OfType<Merchant>.First();
        merchant.MerchantLocations.ShouldNotBeNull(); // fails
    }
}

然而,急切加载工作正常:

public void Test_Eager_Loading() {
    using (var context = new MyDbContext()) {
        var merchant = context.Users.OfType<Merchant>.Include("MerchantLocations").First();
        merchant.MerchantLocations.ShouldNotBeNull(); // passes
    }
}

MerchantLocations被标记为public virtual所以我不确定问题是什么。我还在我的中添加了以下内容DbContext构造函数:

Configuration.LazyLoadingEnabled = true;
Configuration.ProxyCreationEnabled = true;

编辑:我还注意到merchant上述测试中返回的对象不是 EF 代理。它是一个平原Merchant。我怀疑这是造成问题的原因。


我意识到问题在于 Merchant 类不满足代理生成的要求。具体来说,我需要添加一个受保护的无参数构造函数。我只有一个私人的。

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

EF Code First 延迟加载不起作用 的相关文章

随机推荐

  • Node.js 将图像通过管道传输到内存中并显示它

    我正在制作一个下载和显示图像的 Node js Electron 应用程序 我正在使用请求从互联网下载图像 我想将此图像保存在内存中并显示它 而不将文件保存在本地硬盘上 我知道我可以通过插入来完成我在这里提出的要求 img src url
  • 为什么初始化程序不能处理返回 list 的属性?

    找不到这个问题的答案 这一定是显而易见的 但仍然如此 我尝试在这个简化的示例中使用初始化程序 MyNode newNode new MyNode NodeName newNode Children Add smth mistake is h
  • 以串行对象作为参数的多进程

    我在使用 Python 并将串行对象作为参数传递给单独的进程时遇到问题 该程序在 Windows 8 中运行 因此不能选择使用全局变量 from multiprocessing import Queue from multiprocessi
  • 如何隐藏AG-Grid中的列?

    如何隐藏 AG Grid 中的列 并且它不应显示在工具面板中 var columnDefs headerName Stone ID field Stone ID width 100 hide true 您可以设置列属性抑制工具面板 http
  • 强制 VSProps 设置覆盖项目设置

    我有一个 vsprops 文件 它定义了针对 Visual Studio 2008 构建所有项目时应使用的优化 如果我将项目的属性设置为 从项目默认值的父级继承 它将起作用 并将它们填充到 vcproj 文件中 但是 这并不能保护我免受开发
  • R - 复制组内的值

    我有一个数据框 其中有某人在过去 3 年 2016 年 2017 年 2018 年 中获得的总分 还有他们每年的得分列 我的数据框如下所示 myDF lt data frame ID c 1 1 1 2 2 3 4 Dates c 2016
  • Rails 3 无效多字节字符 (US-ASCII)

    我发现了一个类似的帖子here https stackoverflow com questions 1739836 invalid multibyte char us ascii with ruby on rails但无论如何我都无法解决问
  • 斐波那契搜索

    有人请解释一下斐波那契搜索算法 我尝试了很多资源并进行了很多搜索 但算法仍然不清楚 大多数资源都在与二分搜索的链接中描述了它 但我不明白它们 我知道斐波那契搜索算法是二分搜索的扩展 我对此非常了解 我的书也未能解释 我知道斐波那契数定义为
  • 我们可以在MySql中为UPPERCASE和LOWERCASE函数创建函数索引吗

    我们可以在MySql中创建功能索引吗UPPERCASE and LOWERCASE功能 我已经搜索过 但在互联网上找不到任何相关的内容 如果有人实现了这样的事情 是的 添加了 MySQL 8 0 13索引表达式 https dev mysq
  • 带有左连接的 LINQ 和枚举

    我有一个枚举 public enum Status New InProgress Processed InComplete 我有以下查询要查询 以根据状态提供列表计数 但现在我只知道它是否存在 因此 如果已处理计数为零 我将不会获得任何值
  • Python从图中获取所有路径

    我正在尝试找到用户可以通过网站访问的路径 我使用以下格式表示我的图表 graph 0 1 2 1 3 6 0 2 4 5 0 3 1 4 6 2 5 6 2 6 1 4 5 我已经实现了深度优先算法 但需要对其进行更改才能发挥作用 它需要返
  • Python-关于操作系统上的文件句柄限制

    嗨 我用 python 编写了一个程序 当我打开太多临时文件时 我会得到一个异常 Too much open files 然后我发现 Windows 操作系统或 C 运行时具有文件句柄限制 因此 我使用 StringIO 更改我的程序 但仍
  • APP_INITIALIZER 之后服务实例化两次

    问题是 我需要进行 http 调用并存储生成动态路由所需的对象 所以 我利用了 APP INITIALIZER app module ts import ApplicationService from application service
  • Firebase“Parcelable 遇到 IOException 写入可序列化对象”,对象包含 DocumentReference 的 ArrayList

    我正在尝试传递到另一个活动User包含 Firestore Arraylist 的对象DocumentReference当我开始活动时 我遇到了这个异常 我没有使用 Parceleable 所以您能否确认此错误是由于要传递的对象的复杂性造成
  • TFS 集合级别的自定义安全组

    我们有一组开发人员 测试人员和 BA 他们将为集合下的 30 多个项目工作 因此不要为每个项目添加他们 而是希望在集合级别创建安全组 以便每个人都可以访问集合下的所有项目 在 TFS 上 我们希望在集合级别拥有自定义组 例如开发人员 测试人
  • VBA自动将.Range更改为.range

    我一直在编写一个 Excel 宏来帮助我在工作中处理数据 现在我已经完成了代码的编写 但我不断收到错误 因为 Microsoft Visual Basic 不断将 Range 更改为 range 每当这样做时 我都会收到编译错误 因为该方法
  • 为什么 z 索引不起作用?

    所以如果我理解的话z index正确的是 在这种情况下它会是完美的 我想将底部图像 标签 卡片 放置在其上方的 div 下方 所以你看不到锋利的边缘 我该怎么做呢 z index 1 on the image tag card or z i
  • 发送者和接收者根据请求通过 ssh 传输文件?

    我创建了一个程序 它迭代一堆文件并调用其中的一些文件 scp
  • 如何将字符串的元素放入具有特定行为的列表中

    list1 A B list2 1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 我需要我的输出 1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4 现在如果我知道 子列表 1 的长度 4 sublist2 的长度
  • EF Code First 延迟加载不起作用

    我首先使用 EF6 的代码 但似乎无法让延迟加载工作 预加载工作正常 我有以下课程 public class Merchant User public virtual ICollection