2011-01-06 62 views
3

好吧,這應該很容易,但我一直在撕掉我的頭髮。這裏是我的POCO(這與機器零件做的,所以一部分可以包含一個父零件內):EF4 CTP5自引用分級實體映射

public class Part 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public Part ParentPart { get; set; } 
} 

在創建數據庫表中,列名「ID」,「姓名」,和「PartID」。如何將最後一列的名稱更改爲「ParentPartID」?

回答

2

基本上,你要重命名的獨立協會外鍵,這是一口流利的API代碼,將做到這一點:

protected override void OnModelCreating(ModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Part>() 
       .HasOptional(p => p.ParentPart) 
       .WithMany() 
       .IsIndependent() 
       .Map(m => m.MapKey(p => p.ID, "ParentPartID")); 
} 

然而,由於CTP5一個bug,這個代碼拋作爲例外,自引用關聯(這是您的關聯類型)。解決方法將是您的關聯更改爲外鍵關聯如下:

public class Part 
{ 
    public int ID { get; set; } 
    public string Name { get; set; }     
    public int ParentPartID { get; set; } 

    [ForeignKey("ParentPartID")] 
    public Part ParentPart { get; set; } 
} 
+0

..並且由於CTP5另一個bug,此屬性將被忽略,與ParentPart屬性名稱一起;-) – RedGlyph 2011-02-06 17:33:13