0

我有这样的课:

  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(来自父节点)作为 ParentID,而不是 TreeID。

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

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

4

2 回答 2

0

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

于 2013-08-15T14:38:15.197 回答
0

你为什么不使用你的“ID”作为一个唯一的列 - 例如使用一个唯一的索引?然后,如果 ID 是 PK,您将拥有相同的语义。

于 2014-10-14T17:33:57.450 回答