aspnet core entity framework 7 自引用 "job" 1 对多 table
aspnet core entity framework 7 self referencing "job" 1 to many table
我有一个包含职位的 "Job" table。事实上,工作并不总是一蹴而就的。您可以拥有一份需要多次拜访的工作。我打算将其表示为另一份工作,但 link 通过自引用 linkId 回到原来的工作。
我在使用流利的 API 表示时遇到问题。它是一对多的关系.. 一份工作可能有多次访问,因此许多 linkId 指向原始工作。 link Id 将返回到原始作业 Id。它也是可选的,因为大多数工作可能一次完成..
我一直在寻找这个,但是很难将其他示例转换为这个示例,因为它们中的很多都是一对一的,而且那些给出 examples 一对多的示例似乎是使用 EF6 这样做的这是不同的。
我的工作table是:
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 中表示一对多的自引用和流利 API,哪个是可选的?
编辑:虽然这没有提供语法错误,但我不得不说我不确定它是否正常
modelBuilder.Entity<Job>().HasMany(j => j.LinkedJobs).WithOne().IsRequired(false);
感谢任何帮助...我发现关于如何配置一对多自引用关系的知识很少...
工作class:
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);
我有一个包含职位的 "Job" table。事实上,工作并不总是一蹴而就的。您可以拥有一份需要多次拜访的工作。我打算将其表示为另一份工作,但 link 通过自引用 linkId 回到原来的工作。
我在使用流利的 API 表示时遇到问题。它是一对多的关系.. 一份工作可能有多次访问,因此许多 linkId 指向原始工作。 link Id 将返回到原始作业 Id。它也是可选的,因为大多数工作可能一次完成..
我一直在寻找这个,但是很难将其他示例转换为这个示例,因为它们中的很多都是一对一的,而且那些给出 examples 一对多的示例似乎是使用 EF6 这样做的这是不同的。
我的工作table是:
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 中表示一对多的自引用和流利 API,哪个是可选的?
编辑:虽然这没有提供语法错误,但我不得不说我不确定它是否正常
modelBuilder.Entity<Job>().HasMany(j => j.LinkedJobs).WithOne().IsRequired(false);
感谢任何帮助...我发现关于如何配置一对多自引用关系的知识很少...
工作class:
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);