4

如何使用modelBuilder映射類似的內容?凡那裏有一個空的外鍵引用同一個表的主鍵實體框架CTP5代碼優先映射 - 同一表中的外鍵

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

回答

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); 
    } 
} 
+0

哇,這是從CTP3的很多... ... – Basic 2011-02-28 20:59:59

相關問題