我正在构建一个带有“闭包表”的分层数据库来构建树它是一个自引用表,两个键应该成为主键。
问题是,当我期望只有 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 列的表:
- 任务 ID
- ChildId
- 长度
- Child_TaskId
- Child_ChildId
我期望:
- 任务 ID
- ChildId
- 长度
我猜想缺少一些流利的 api,但否则我无法开始工作?