C# 同一表的外键

C# 同一表的外键,c#,asp.net-core,asp.net-core-mvc,entity-framework-core,C#,Asp.net Core,Asp.net Core Mvc,Entity Framework Core,我正在尝试用户可以评论出版物。我已经用efcore创建了表注释 这里有多个级别的评论,我采用了以下方式: 表出版物 - Id (primary key) - PublicationId (foreing key to Publication) - Comment - ParentComment (foreign key to Comments, that is, the same table) 表评论 - Id (primary key) - PublicationId (foreing

我正在尝试用户可以评论出版物。我已经用efcore创建了表注释

这里有多个级别的评论,我采用了以下方式:

出版物

- Id (primary key)
- PublicationId (foreing key to Publication)
- Comment
- ParentComment (foreign key to Comments, that is, the same table)
评论

- Id (primary key)
- PublicationId (foreing key to Publication)
- Comment
- ParentComment (foreign key to Comments, that is, the same table)

问题是出现了一个错误,警告我无法为同一个表创建foreing键。那么如何实现层次结构呢?

您的代码应该是这样的

public int Id {get; set;}
public virtual Publication Publication {get; set;} // If Publication is an object
public virtual Comment Comment {get; set;}
public virtual Comment ParentComment {get; set;}

您可以共享您的实体模型吗?您是否先使用代码?我的一个评论是,如果您将属性命名为与类型相同的名称,则在编译过程中很可能会遇到冲突。@Paul这不是真的。可以为属性名指定与类型相同的名称。它会编译好的。我的坏,我的思想去了嵌套类。如果类中有一个属性为:Comment Comment{get;set;},并且Comment类是与该属性位于同一类中的嵌套类,则您将遇到该问题。这与Comment类似,但它只是一个字符串,问题出现在我尝试在发布上插入新注释时:INSERT语句与外键相同表约束“FK\U Comments\U Comments\U ParentCommentId”冲突