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);
}