【问题标题】:EF4 CTP5 self-referencing hierarchical entity mappingEF4 CTP5 自引用分层实体映射
【发布时间】:2011-06-04 11:11:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: hierarchical-data ef4-code-only


    【解决方案1】:

    基本上,您希望在独立关联中重命名外键,这是可以做到这一点的流畅 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; }
    }
    

    【讨论】:

    • .. 由于 CTP5 中的另一个错误,该属性以及 ParentPart 属性名称将被忽略;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多