我有2个班级:
public class GroupType
{
[Key]
public decimal GroupTypeID { get; set; }
public string Title { get; set; }
public virtual ICollection<Group> Groups { get; set; }
}
和
public class Group
{
[Key]
public decimal GroupID { get; set; }
public string Title { get; set; }
public decimal? GroupParentID { get; set; }
public decimal GroupTypeID { get; set; }
public string FileName { get; set; }
public string GroupCode { get; set; }
public virtual ICollection<GroupType> GroupTypes { get; set; }
public virtual ICollection<Group> MainGroups { get; set; }
}
当我调试项目时,我收到此错误:
“无效的列名'GroupGroupID'。 “**和**导航属性 'MainGroups' 'Parand.DataAccess.Group'不能 与自身相反。
我想要定义树的组( n 组的层)
我该怎么做呢?
答案 0 :(得分:2)
这将在Group
实体中创建自引用关联:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Group>()
.HasMany(g => g.MainGroups)
.WithOptional()
.HasForeignKey(p => p.GroupParentID);
}
Group
和GroupType
之间的多对多关联将使用连接表创建,因此您应该从GroupTypeID
实体中删除Group
属性,因为它将被处理仅作为标量属性而不是此关联的外键。