我如何使用modelBuilder映射这样的东西?其中可以为空的外键引用相同的表主键
Table: Task
taskID int pk
taskName varchar
parentTaskID int (nullable) FK
任务类:
public class Task
{
public int taskID {get;set;}
public string taskName {get;set;}
public int parentTaskID {get;set;}
public Task parentTask {get;set;}
}
...
modelBuilder.Entity<Task>()
.HasOptional(o => o.ParentTask)....
答案 0 :(得分:5)
以下代码为您提供了所需的架构。请注意,您还需要将ParentTaskID
外键定义为可以为空的整数,就像我在下面所做的那样。
public class Task
{
public int TaskID { get; set; }
public string TaskName { get; set; }
public int? ParentTaskID { get; set; }
public Task ParentTask { get; set; }
}
public class Context : DbContext
{
public DbSet<Task> Tasks { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Task>()
.HasOptional(t => t.ParentTask)
.WithMany()
.HasForeignKey(t => t.ParentTaskID);
}
}