4

ツリーを構築するために「クロージャテーブル」を使用して階層データベースを構築しています。これは自己参照テーブルであり、2 つのキーが主キーになる必要があります。

問題は、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. 子ID
  3. 長さ
  4. Child_TaskId
  5. Child_ChildId

私は期待しました:

  1. タスク ID
  2. 子ID
  3. 長さ

流暢な API が欠落していると推測していますが、それ以外の場合は作業できませんでした。

4

0 に答える 0