问题
How would I map something like this using the modelBuilder? Where theres a nullable foreign key referencing the same tables primary key
Table: Task
taskID int pk
taskName varchar
parentTaskID int (nullable) FK
Task class:
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)....
回答1:
The following code gives you the desired schema. Note that you also need to define ParentTaskID
foreign key as a nullable integer, like I did below.
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);
}
}
来源:https://stackoverflow.com/questions/5146013/entity-framework-ctp5-code-first-mapping-foreign-key-in-same-table