如何在流畅的api和EF中使用复合键构建自引用表

时间:2012-09-25 00:04:19

标签: sql ef-code-first composite-key self-reference transitive-closure-table

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

问题是,当我期望只有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. 的TaskID
  2. childID的
  3. 长度
  4. Child_TaskId
  5. Child_ChildId
  6. 我期待:

    1. 的TaskID
    2. childID的
    3. 长度
    4. 我猜测一些流利的api缺失,但我无法开始工作?

0 个答案:

没有答案
相关问题