Entity framework 实体框架下基于代码优先的数据库设计

Entity framework 实体框架下基于代码优先的数据库设计,entity-framework,Entity Framework,我正在为测试设计一个数据库(比如说@school),我不确定如何在数据库中播种(我使用代码优先的方法,模型如下) 我的模型如下: Levels -> Subjects -> Chapters -> Questions -> Options 如果我必须播种,我将需要创建一个等级和一个主题列表,这将需要一个章节列表,这将需要一个问题列表,然后是选项列表 这是模型的代码: //Level public class Level { public Level()

我正在为测试设计一个数据库(比如说
@school
),我不确定如何在数据库中播种(我使用代码优先的方法,模型如下)

我的模型如下:

Levels -> Subjects -> Chapters -> Questions -> Options
如果我必须播种,我将需要创建一个等级和一个主题列表,这将需要一个章节列表,这将需要一个问题列表,然后是选项列表

这是模型的代码:

//Level 
public class Level
{
    public Level()
    {
        Subjects = new List<Subject>();
    }

    public int id { get; set; }
    public string Name { get; set; }

    //Navigate
    public virtual ICollection<Subject> Subjects { get; set; }
}

//Subject
public class Subject
{
    public Subject()
    {
        Chapters = new List<Chapter>();
    }

    public int id { get; set; }
    public string Name { get; set; }

    public int LevelId { get; set; }

    //Navigate
    public virtual Level Level { get; set; }
    public virtual ICollection<Chapter> Chapters { get; set; }
}

// Chapter
public class Chapter
{
    public Chapter()
    {
        Questions = new List<Question>();
    }

    public int id { get; set; }
    public string Name { get; set; }

    public int SubjectId { get; set; }
    public int LevelId { get; set; }

    //Navigate
    public virtual Subject Subject { get; set; }
    public virtual Level Level { get; set; }

    public virtual ICollection<Question> Questions { get; set; }
}
//级别
公营班级
{
公共级别()
{
主题=新列表();
}
公共int id{get;set;}
公共字符串名称{get;set;}
//导航
公共虚拟ICollection主题{get;set;}
}
//主题
公共课科目
{
公共主题()
{
章节=新列表();
}
公共int id{get;set;}
公共字符串名称{get;set;}
公共int-LevelId{get;set;}
//导航
公共虚拟级别{get;set;}
公共虚拟ICollection章{get;set;}
}
//章
公共课章节
{
公共章()
{
问题=新列表();
}
公共int id{get;set;}
公共字符串名称{get;set;}
public int SubjectId{get;set;}
公共int-LevelId{get;set;}
//导航
公共虚拟主题主题{get;set;}
公共虚拟级别{get;set;}
公共虚拟ICollection问题{get;set;}
}

任何帮助都将不胜感激

我不确定您是问“如何播种”还是问“如何在播种时绕过依赖性问题”…实际上是后者。请查看可能的重复(没有可接受的答案,但似乎有一个可接受的答案…)此外,您可以简单地按相反的顺序创建内容(即,添加四个选项,然后添加一个涉及这四个选项的问题,然后添加一个涉及该问题的章节,等等。但是,我相信如果您只需创建新对象并批量更新它们的关系,然后最后调用
SaveChanges()
,应该可以。。。