4

我正在构建一个带有“闭包表”的分层数据库来构建树它是一个自引用表,两个键应该成为主键。

问题是,当我期望只有 3 列时,我最终得到 5 列。

这是我尝试过的:

    public class Tree
    {
        public int TaskId { get; set; }
        public Task Task { get; set; }  //navigation Property to TaskTable

        public int? ChildId { get; set; }
        public Tree Child { get; set; } //navigation Property

        public int Length { get; set; } //Length

    }

    public class Task
    {
        public int TaskId { get; set; }
        public virtual ICollection<Tree> Trees { get; set; }
    }

    modelBuilder
        .Entity<Task>()
        .HasKey(t => t.TaskId);

    modelBuilder
        .Entity<Tree>()
        .HasKey(a => new { a.TaskId, a.ChildId });

结果是一个包含 5 列的表:

  1. 任务 ID
  2. ChildId
  3. 长度
  4. Child_TaskId
  5. Child_ChildId

我期望:

  1. 任务 ID
  2. ChildId
  3. 长度

我猜想缺少一些流利的 api,但否则我无法开始工作?

4

0 回答 0