Entity Framework CTP5 Code-First Mapping - Foreign Key in same table

∥☆過路亽.° 提交于 2019-11-28 04:43:22

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!