Entity framework EF First代码中一个实体中的一对多映射

Entity framework EF First代码中一个实体中的一对多映射,entity-framework,code-first,Entity Framework,Code First,我有两门课: public class GroupType { [Key] public decimal GroupTypeID { get; set; } public string Title { get; set; } public virtual ICollection<Group> Groups { get; set; } } 公共类GroupType { [关键] 公共十进制GroupTypeID{get;set;

我有两门课:

public class GroupType
{
    [Key]
    public decimal GroupTypeID   { get; set; }
    public string  Title         { get; set; }

    public virtual ICollection<Group> Groups { get; set; }
}
公共类GroupType
{
[关键]
公共十进制GroupTypeID{get;set;}
公共字符串标题{get;set;}
公共虚拟ICollection组{get;set;}
}

公共类组
{
[关键]
公共十进制GroupID{get;set;}
公共字符串标题{get;set;}
公共十进制?GroupParentID{get;set;}
公共十进制GroupTypeID{get;set;}
公共字符串文件名{get;set;}
公共字符串组代码{get;set;}
公共虚拟ICollection组类型{get;set;}
公共虚拟ICollection主组{get;set;}
}
调试项目时,出现以下错误:

无效的列名“GroupId”。 “**和**导航属性 “主要群体”的 “Parand.DataAccess.Group”不能为空 与此相反

我想定义组树(n组层)


我如何才能做到这一点?

这将在
组中创建自引用关联
实体:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Group>()
                .HasMany(g => g.MainGroups)
                .WithOptional()
                .HasForeignKey(p => p.GroupParentID);
}
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
{
modelBuilder.Entity()
.HasMany(g=>g.main组)
.WithOptional()
.HasForeignKey(p=>p.GroupParentID);
}

Group
GroupType
之间的多对多关联将使用联接表创建,因此您应该从
Group
实体中删除
GroupTypeID
属性,因为它将仅被视为标量属性,而不是此关联的外键

您正在使用实体框架CTP5.0吗?
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Group>()
                .HasMany(g => g.MainGroups)
                .WithOptional()
                .HasForeignKey(p => p.GroupParentID);
}