EF 7:如何加载一对多关系中的相关实体

2023-12-28

我有以下代码。 为什么我的导航属性(课程中的要求和要求中的课程)为空?

    public class Course : AbsEntity {
            [Key]
            public string Title { get; set; }
            public string Term { get; set; }
            public int Year { get; set; }
            public string CourseId { get; set; }        
            public double GradePercent { get; set; }        
            public string GradeLetter { get; set; }     
            public string Status { get; set; }
            public int ReqId { get; set; }

            public Requirement Requirement { get; set; }
        }

    public class Requirement : AbsEntity {
            [Key]
            public int ReqId { get; set; }
            public string ReqName { get; set; }

            public ICollection<Course> Courses { get; set; }
        }

// In DbContext
    protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                modelBuilder.Entity<Course>().HasOne(c => c.Requirement).WithMany(r => r.Courses).HasForeignKey(c => c.ReqId);
                modelBuilder.Entity<Requirement>().HasMany(r => r.Courses).WithOne(c => c.Requirement);
            }

首先,您不需要两次配置关系,只需执行一次:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
   modelBuilder.Entity<Course>().HasOne(c => c.Requirement)
                                .WithMany(r => r.Courses)
                                .HasForeignKey(c => c.ReqId);          
}

第二件事是,如果您正在执行查询并且希望延迟加载相关属性,恐怕这是不可能的。 EF 7 不支持延迟加载 https://github.com/aspnet/EntityFramework/issues/3312然而。正如你所看到的,有一个积压项目 https://github.com/aspnet/EntityFramework/issues/3797跟踪延迟加载。因此,如果您需要加载相关实体,您应该使用显式加载Include method:

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

EF 7:如何加载一对多关系中的相关实体 的相关文章

随机推荐

  • UWP (c#):主循环(事件循环)

    背景 我对 C 和 UWP 比较陌生 并开始开发一个应用程序以学习基础知识 我尝试寻找我认为是一个非常基本的问题的答案 但我找不到答案 可能是我的错 因此 我正在制作的应用程序连接到传输一些数据的蓝牙设备 第一个 查看页面 是蓝牙设备选择
  • 如何以与应用程序启动器相同的方式在 iPhone 上“闪耀”png?

    我想向用户展示当应用程序启动器将其方形平面 png 图像转换为正常的 闪亮 图标时会是什么样子 例如圆角和玻璃效果 Thanks 对于图标上 闪耀 的应用程序内表示 您可以使用以下代码创建一个绘制闪耀渐变的自定义 UIViewhere ht
  • 如何将变量的值传递到命令的标准输入?

    我正在编写一个应该有点安全的 shell 脚本 即不通过命令参数传递安全数据 并且最好不使用临时文件 如何将变量传递到命令的标准输入 或者 如果不可能 我如何正确使用临时文件来完成此类任务 在 Bash 中将值传递到标准输入非常简单 you
  • 测试移除方法而不调用添加方法

    我正在为管理标签对象树的类编写测试 public class Tag public virtual int Id get set public virtual string Description get set private IList
  • 用C语言编写的快速排序

    我正在阅读 K R 的 ANSI C 我遇到了 qsort 程序 我需要一点帮助 假设我有 9 个元素 索引为 0 gt 8 请阅读评论 看看我的理解是否正确 非常感谢你的努力 void qsort int v int left int r
  • 错误:编译规则集失败:“loader”上的查询参数已被删除,以支持“options”属性

    PS C Projects webpack react starter gt npm run start 电子邮件受保护 cdn cgi l email protection开始 webpack服务 模式开发 env开发 hot 端口300
  • 在.Net Core 2.1中使用FirstOrDefault时抛出System.Linq.Expressions异常

    我收到了大约 300 多个异常 这些异常在我的服务器输出中被垃圾邮件标记为 Exception thrown System ArgumentException in System Linq Expressions dll 我正在使用的查询如
  • JavaFX:多次使用线程

    我是 JavaFX 新手 我对线程有一个小问题 我可以执行它两次 但我找不到原因 这是我的代码的总结 Task
  • Android:旋转并显示文件中的图像

    我有一个非常简单的 ImageView 布局 我的应用程序打开相机 保存图像 然后在 ImageView 中显示图像BitmapFactory decodeFile 唯一的问题是它是旋转的 据我了解 a 这是由于手机的摄像头默认为横向 因此
  • wpf 中的 ItemsPanelTemplate 选择器?

    我需要根据控件上的依赖属性设置列表框的 ItemsPanelTemplate 属性 如何使用 DataTemplateSelector 来做到这一点 我有类似的东西
  • 如何将 XML Word 文档转换为 DOCX?

    我收到了一系列文件夹 其中包含大量 xml 格式的 Word 文档 它们每个都包含一些 VBA 代码 但所有代码都已经运行过 所以我不需要保留它 我需要打印每个文件夹中的所有文件 但由于网络上 XML 文件的限制 我无法简单地从 Windo
  • FIELDDATA 数据太大

    我打开 kibana 并进行搜索 然后收到分片失败的错误 我查看了 elasticsearch log 文件 看到了这个错误 org elasticsearch common breaker CircuitBreakingException
  • 使用 gnuplot 的向量场

    如何绘制矢量场 其中每个点 x y 的方向由下式给出tangent alpha f x y 据我所知 gnuplot 只能在从文件读取数据时绘制向量场 您的文件必须有 4 列 x y deltax 和 delta y 然后 gnuplot
  • Unity aab 不符合 Google Play 64 位要求

    我有一个 Unity 项目 正在从 APK 切换到 AAB 应用程序包 以前 当我将其构建为 APK 时 Google Play 控制台告诉我该 APK 兼容 64 位 现在我正在构建 aab 我收到警告 此版本不符合 Google Pla
  • 有趣的 SQL 连接日期之间的日期

    首先 感谢任何帮助我解决这个问题的人 我使用的是 SQL 2005 但如果 05 中没有可用的解决方案 可以使用 2008 我有一行数据 如下所示 select from mySPtable myPK Area RequestType St
  • 可靠地显示 matplotlib(0.99 到 1.3.1)数字而不会阻塞

    有没有办法在 Python 2 65 Matplotlib 0 99 中显示 pyplot 图 而不锁定其他所有内容 我有一个带有 Pmw GUI 的程序 在 Python 2 75 和 Matplotlib 1 3 1 上运行 在 Win
  • AppCertDlls:病毒导致 Win32 上的进程创建速度减慢

    大约两个月来 我在 Windows XP Home SP3 上遭受了严重的进程创建惩罚 这个问题在创建大量进程的任务中最为明显且烦人 例如 shell 脚本 顺便说一句 Cygwin 上的 bash 脚本 Makefile 或解压 IzPa
  • 增强导入的打字稿界面

    我正在使用一个包 ko 组件路由器 https github com Profiscience ko component router 具有以下 简明 类型定义 索引 d ts export IContext Context from co
  • Angular 2 中 JavaScript 堆内存不足

    我正在使用 Angular CLI 请检查我的 CLI 信息 angular cli 1 2 1 node 6 10 0 os win32 x64 angular animations 4 1 1 angular common 4 0 0
  • EF 7:如何加载一对多关系中的相关实体

    我有以下代码 为什么我的导航属性 课程中的要求和要求中的课程 为空 public class Course AbsEntity Key public string Title get set public string Term get s