实体框架:具有不同ParrentID的自引用树

时间:2013-08-15 08:44:04

标签: c# entity-framework-4

我有这样的课程:

  class Tree
  {
     [Key]
     public int TreeID { get; set; }
     public int? ParentID { get; set; }
     public int ID { get; set; }
     public string Name { get; set; }

     public virtual Tree Parrent { get; set; }
     public virtual ICollection<Tree> Children { get; set; }
 }

配置类:

class TreeConfiguration : EntityTypeConfiguration<Tree>
{
    public TreeConfiguration()
    {
        this.HasOptional(d => d.Parrent)
            .WithMany(p => p.Children)
            .HasForeignKey( d => d.ParentID)
            .WillCascadeOnDelete(false);
    }

}

它运行良好,但我想要的是子节点使用ID(来自parrent节点)用于ParentID,而不是TreeID。

它应该像这样工作: 每个节点都有一个id - 即ID - 和其父节点的id - 即ParentID。 TreeID是主键,它与子父映射无关 - 它仅用于数据库。

我无法更改列,所以我必须这样

2 个答案:

答案 0 :(得分:0)

嗯......显然它与FK必须始终指向主键的事实有关。所以这是不可能的。

答案 1 :(得分:0)

为什么不使用你的&#34; ID&#34;作为一个独特的列 - 例如使用独特的索引吗? 那么你就有了相同的语义,就像你将PK作为PK一样。