EF4 CTP5自引用分层实体映射

时间:2011-01-06 05:32:34

标签: hierarchical-data ef4-code-only

好吧,这应该很容易,但我一直在撕扯我的头发。这是我的POCO(与机器零件有关,因此零件可以包含在父零件中):

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

创建数据库表时,列名称为“ID”,“名称”和“PartID”。如何将最后一列的名称更改为“ParentPartID”?

1 个答案:

答案 0 :(得分:2)

基本上,您希望在 Independent Association 中重命名外键,这是可以执行此操作的流畅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中的错误,此代码在自引用关联(这是您的关联类型)中抛出异常。解决方法是将您的关联更改为外键关联,如下所示:

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