我有这样的课程:
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是主键,它与子父映射无关 - 它仅用于数据库。
我无法更改列,所以我必须这样
答案 0 :(得分:0)
嗯......显然它与FK必须始终指向主键的事实有关。所以这是不可能的。
答案 1 :(得分:0)
为什么不使用你的&#34; ID&#34;作为一个独特的列 - 例如使用独特的索引吗? 那么你就有了相同的语义,就像你将PK作为PK一样。