aspnet core实体框架7自引用“作业”1对多表

2023-12-08

我有一个包含职位的“职位”表。事实上,工作并不总是一次性完成的。您可以拥有一份需要多次访问的工作。我打算将其表示为另一项工作,但通过自引用 linkId 链接回原始工作。

我无法使用 Fluent API 来表示这一点。它是一对多的关系.. 一项工作可能有多次访问,因此许多 linkId 指向原始工作。链接 ID 将返回到原始作业 ID。它也是可选的,因为大多数工作可能会一次性完成。

我已经找到了这个,但是很难将其他示例转变为这个示例,因为它们中的很多都是一对一的,并且进一步给出了examples一对多似乎使用 EF6 来实现,这是不同的。

我的工作表是:

    using System;

namespace JobsLedger.Model.Entities
{
    public class Job : IEntityBase
    {
        public int Id { get; set; }
        public string Model { get; set; }
        public string Serial { get; set; }
        public string ProblemDetails { get; set; }
        public string SolutionDetails { get; set; }
        public DateTime JobDate { get; set; }
        public int BrandId { get; set; }
        public int JobTypeId { get; set; }
        public int StatusId { get; set; }
        public int ClientId { get; set; }
        public int UserId { get; set; }

        public int? LinkId { get; set; }  //If there are more than one job callout eg back to fit parts.
        public Job MultipleJobVisits { get; set; }
    }
}

我很确定我有这个错误:

        // Job
        modelBuilder.Entity<Job>().Property(j => j.Model).HasMaxLength(100);
        modelBuilder.Entity<Job>().Property(j => j.Serial).IsRequired();
        modelBuilder.Entity<Job>().Property(j => j.ProblemDetails).HasMaxLength(100);
        modelBuilder.Entity<Job>().Property(j => j.SolutionDetails).HasMaxLength(500);
        modelBuilder.Entity<Job>().Property(j => j.JobDate);
        modelBuilder.Entity<Job>().Property(j => j.Notes).HasMaxLength(1000);
        modelBuilder.Entity<Job>().Property(j => j.BrandId);
        modelBuilder.Entity<Job>().Property(j => j.JobTypeId);
        modelBuilder.Entity<Job>().Property(j => j.StatusId);
        modelBuilder.Entity<Job>().Property(j => j.ClientId);
        modelBuilder.Entity<Job>().Property(j => j.UserId);
        modelBuilder.Entity<Job>().HasOne(x => x.Id)
                                  .WithMany(x => x.LinkId)
                                  .ForeignKey(x => x.Id)
                                  .Required(false);

如何在 EF7 和 Fluent API 中表示一对多自引用,哪个是可选的?

EDIT:虽然这没有提供语法错误,但我不得不说我不确定是否可以

modelBuilder.Entity<Job>().HasMany(j => j.LinkedJobs).WithOne().IsRequired(false);

对此的任何帮助都是值得赞赏的......我发现关于如何配置一对多自引用关系的知识很少......


职位类别:

public class Job
{
    public int Id { get; set; }

    public int? JobId { get; set; }

    public Job ParentJob { get; set; }

    public ICollection<Job> ChildJobs { get; set; }
}

流畅的API:

modelBuilder.Entity<Job>()
                .HasMany(oj => oj.ChildJobs)
                .WithOne(j => j.ParentJob)
                .HasForeignKey(j => j.JobId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

aspnet core实体框架7自引用“作业”1对多表 的相关文章

  • 当我单击 C# 中的“取消”按钮时重定向到新页面(Web 部分)

    Cancel button tc new TableCell btnCancel new Button btnCancel Text Cancel btnCancel Click new EventHandler btnCanel Clic
  • 捕获 foreach 条件中抛出的异常

    我有一个foreach在 foreach 本身的条件下循环期间中断的循环 有没有办法try catch抛出异常然后继续循环的项 这将运行几次 直到异常发生然后结束 try foreach b in bees exception is in
  • 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信

    通信对象System ServiceModel Channels ServiceChannel 无法用于通信 因为它处于故障状态 这个错误到底是什么意思 我该如何解决它 您收到此错误是因为您让服务器端发生 NET 异常 并且您没有捕获并处理
  • 在 C++11 中省略返回类型

    我最近发现自己在 C 11 模式下的 gcc 4 5 中使用了以下宏 define RETURN x gt decltype x return x 并编写这样的函数 template
  • Guid 应包含 32 位数字和 4 个破折号

    我有一个包含 createuserwizard 控件的网站 创建帐户后 验证电子邮件及其验证 URL 将发送到用户的电子邮件地址 但是 当我进行测试运行时 单击电子邮件中的 URL 时 会出现以下错误 Guid should contain
  • 使用 EF6 连接到 SQL Server

    在 EF5 之前 为了连接到 SQL Server 2012 我所需要做的就是指定一个如下所示的连接字符串 Data Source SqlExpress Initial Catalog MyDatabase Integrated secur
  • TextBox 焦点的 WinForms 事件?

    我想添加一个偶数TextBox当它有焦点时 我知道我可以用一个简单的方法来做到这一点textbox1 Focus并检查布尔值 但我不想那样做 我想这样做 this tGID Focus new System EventHandler thi
  • ZLIB 解压缩

    我编写了一个小型应用程序 该应用程序应该解压缩以 gzip deflate 格式编码的数据 为了实现这一点 我使用 ZLIB 库 使用解压缩功能 问题是这个功能不起作用 换句话说 数据不是未压缩的 我在这里发布代码 int decompre
  • 如何在 VS 中键入时显示方法的完整文档?

    标题非常具有描述性 是否有任何扩展可以让我看到我正在输入的方法的完整文档 我想查看文档 因为我可以在对象浏览器中看到它 其中包含参数的描述和所有内容 而不仅仅是一些 摘要 当然可以选择查看所有覆盖 它可能是智能感知的一部分 或者我不知道它并
  • VS30063:您无权访问 https://dev.azure.com

    我正在尝试在 asp net core 2 1 mvc 应用程序中使用以下代码连接 Azure DevOps Uri orgUrl new Uri https dev azure com xxxxx String personalAcces
  • 如何用 kevent() 替换 select() 以获得更高的性能?

    来自Kqueue 维基百科页面 http en wikipedia org wiki Kqueue Kqueue 在内核和用户空间之间提供高效的输入和输出事件管道 因此 可以修改事件过滤器以及接收待处理事件 同时每次主事件循环迭代仅使用对
  • 是否有与 C++11 emplace/emplace_back 函数类似的 C# 函数?

    从 C 11 开始 可以写类似的东西 include
  • 为什么 std::allocator 在 C++17 中丢失成员类型/函数?

    一边看着std 分配器 http en cppreference com w cpp memory allocator 我看到成员 value type pointer const pointer reference const refer
  • Xamarin Android:获取内存中的所有进程

    有没有办法读取所有进程 而不仅仅是正在运行的进程 如果我对 Android 的理解正确的话 一次只有一个进程在运行 其他所有进程都被冻结 后台进程被忽略 您可以使用以下代码片段获取当前正在运行的所有 Android 应用程序进程 Activ
  • 禁用 LINQ 上下文的所有延迟加载或强制预先加载

    我有一个文档生成器 目前包含约 200 个项目的查询 但完成后可能会超过 500 个 我最近注意到一些映射表示延迟加载 这给文档生成器带来了一个问题 因为它需要根据生成的文档来访问所有这些属性 虽然我知道DataLoadOptions可以指
  • 组合框项目为空但数据源已满

    将列表绑定到组合框后 其 dataSource Count 为 5 但组合框项目计数为 0 怎么会这样 我习惯了 Web 编程 而且这是在 Windows 窗体中进行的 所以不行combo DataBind 方法存在 这里的问题是 我试图以
  • Qt - 设置不可编辑的QComboBox的显示文本

    我想将 QComboBox 的文本设置为某些自定义文本 不在 QComboBox 的列表中 而不将此文本添加为 QComboBox 的项目 此行为可以在可编辑的 QComboBox 上实现QComboBox setEditText cons
  • 如何检测 C# 中该字典键是否存在?

    我正在使用 Exchange Web 服务托管 API 和联系人数据 我有以下代码 即功能性的 但并不理想 foreach Contact c in contactList string openItemUrl https service
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • 在基类集合上调用派生方法

    我有一个名为 A 的抽象类 以及实现 A 的其他类 B C D E 我的派生类持有不同类型的值 我还有一个 A 对象的列表 abstract class A class B class A public int val get privat

随机推荐

  • 如何向另一个线程发送指针?

    我为相机的 C 库创建了一个 Rust 包装器 使用bindgen C 库中的相机句柄定义为typedef void camera handle哪个bindgen移植为 pub type camera handle std os raw c
  • WIX:使用 .NET 消息文件创建 EventSource

    我正在使用 WIX 为我的应用程序创建一个安装程序 到目前为止一切正常 但是 我试图在安装过程中创建一个新的事件源 但它没有按预期工作 我已阅读并理解这个问题这里是这样 但我有一个有点不同的情况 其中给定的解决方案似乎无法正常工作 以下是不
  • Jackson xml空元素序列化

    我很难受这个问题 Jackson 2 2 XML 序列化器似乎以这种方式序列化空对象字段
  • 在 PHP 和 JavaScript 之间交换变量

    选定的单选按钮将通过下拉框显示其相应的城市列表 例如 选择单选按钮 安大略省 后 将显示一个包含匹配城市的下拉框 在本例中 地区 是安大略省 ID 是 77 下面示例中提到的所有 PHP 函数 循环和 JavaScript 代码都工作正常
  • 如何查找给定时间范围内特定文件被修改的次数[关闭]

    Closed 这个问题是无关 目前不接受答案 如何在 Unix 客户端中查找给定时间范围 即过去 2 天内 特定文件被修改的次数 正如所见UNIX 和 Linux 堆栈交换 Linux 为文件提供了三种时间戳 上次访问时间 内容 时间 内容
  • 如何解决weblogic的jar包与应用程序的jar包冲突

    我遇到了我的应用程序的 jar 和 weblogic 容器的 jar 之间的 jar 冲突问题 我正在寻求您的帮助 情况是这样的 我试图从另一个 Web 服务内部调用一个 Web 服务 并且这两个 Web 服务都托管在我的本地 Weblog
  • Apple 拒绝我的应用程序,因为不包含允许用户从“文件”应用程序查看或选择项目的功能

    在我的应用程序中 我使用以下方法从图库获取视频 void imagePickerController UIImagePickerController picker didFinishPickingMediaWithInfo NSDictio
  • 一个插座双堆栈

    我正在开发双栈客户端 服务器通信 我很好奇 我是否必须打开两个套接字 一个用于 IPv4 一个用于 IPv6 还是可以选择打开一个用于 IPv6 的套接字 并且它能够同时使用 IPv4 和 IPv6 连接 例如 如果我打开这样的套接字 SO
  • 输入带小数点的数值的最佳方法是什么?

    在我的应用程序中 用户需要能够输入带小数位的数值 iPhone 不提供专门用于此目的的键盘 仅提供数字键盘和带有数字和符号的键盘 有没有一种简单的方法可以使用后者并防止输入任何非数字输入 而无需对最终结果进行正则表达式 Thanks 我认为
  • 段落内的 HTML 标签

    我正在开展一个小型 鞋子尺寸 项目 用户应该能够阅读有关特殊鞋子的文章 读者可以通过按钮选择在文章中获取欧盟或美国尺寸 我的问题是 我怎样才能最好地做到这一点 因为我实际上不想创建一个新的 p 标签内的 p p tag p p This i
  • 在 Swift 中以编程方式制作 UIButton

    我正在尝试使用 Swift 以编程方式构建 UI 我怎样才能让这个动作发挥作用 override func viewDidLoad super viewDidLoad Do any additional setup after loadin
  • 如何使用 POCO 库将 C++ 对象传输到 Web 服务

    我有一个使用 Qt 和 openCV 的图像处理应用程序 对于每一帧 我应该将捕获的 cv Mat 图像对象发送到服务器以对其进行处理并获取结果 我应该使用 REST 架构 因为它的负载较低 我应该使用什么工具将 cv Mat 发送到服务器
  • 使用 Solver Foundation 进行约束规划的缺点

    使用 Microsoft Solver Foundation for CLP 有哪些缺点 Solver 确实在 Express Standard 版本中提供了一些支持 但可以想象 人们需要购买昂贵的 Gurobi Knitro 附加组件才能
  • 使用 #pragma GCC Optimize 优化 C 代码

    我正在尝试使用 GCC pragma optimization 在我的 C 代码中设置全局优化 Ubuntu 上的 GCC 版本是 4 4 3 基本思想是使用特定于功能的优化级别 pragma GCC optimize O3 我收到编译错误
  • Jackson 使用 Spring MVC 重复嵌套对象未反序列化

    我正在尝试将以下 POJO 转换为 JSON RestController Entity Table name user location NamedQuery name UserLocation findAll query SELECT
  • Swift Admob 控制台显示模拟器设备 ID,但在 iPhone 上运行时不显示?

    我已经在我的项目中实现了 Admob 但是我无法为我的 iPhone 添加测试设备 ID 这是代码 let request GADRequest myAd GADInterstitial adUnitID ca app pub 441173
  • OpenMP 大大减慢了 for 循环速度

    我正在尝试通过 OpenMP 并行化来加速这个 for 循环 我的印象是这应该将工作分成多个线程 然而 也许开销太大 无法给我带来任何加速 我应该提到这个循环发生了很多很多次 并且循环的每个实例都应该并行化 循环迭代次数 newNx 可以小
  • 如何 db:seed 模型及其所有嵌套模型?

    我有这些课程 class User has one user profile accepts nested attributes for user profile attr accessible email password passwor
  • 仅使用 Javascript 将事件监听器添加到不存在的对象

    我搜索了整个 stackoverflow 但没有针对这个问题得到任何好的结果 如果我错了 请纠正我 我想向 DOM 中存在或不存在的对象添加EventListener 在Jquery中我们可以简单地执行以下代码 document on cl
  • aspnet core实体框架7自引用“作业”1对多表

    我有一个包含职位的 职位 表 事实上 工作并不总是一次性完成的 您可以拥有一份需要多次访问的工作 我打算将其表示为另一项工作 但通过自引用 linkId 链接回原始工作 我无法使用 Fluent API 来表示这一点 它是一对多的关系 一项