Как создать самоссылающуюся таблицу с составным ключом в свободное API и EF
Я строю иерархическую базу данных с "таблицей замыканий", чтобы построить дерево. Это таблица с самоссылкой, и оба ключа должны стать первичным ключом.
Проблема в том, что я получаю 5 столбцов, когда ожидаю только 3.
Вот что я попробовал:
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 столбцами:
- TaskId
- ChildId
- длина
- Child_TaskId
- Child_ChildId
Я ожидал:
- TaskId
- ChildId
- длина
Я предполагаю, что какой-то свободный API отсутствует, но я не мог заставить работать иначе?