Entity Framework CTP5 - сопоставление с первым кодом - внешний ключ в той же таблице - PullRequest
4 голосов
/ 28 февраля 2011

Как бы я отобразил что-то подобное с помощью 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)....

1 Ответ

5 голосов
/ 28 февраля 2011

Следующий код дает вам желаемую схему. Обратите внимание, что вам также необходимо определить ParentTaskID внешний ключ как целое число, допускающее значение NULL, как я сделал ниже.

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);
    }
}
...