2011-01-06 66 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