c# - 播种多对多数据

标签 c# asp.net-mvc entity-framework code-first seeding

您好,我正在尝试为我的项目创建一些种子,但我无法将多对多关系数据播种到数据库。

我的数据库是这样的:

enter image description here

TeacherSkills 中,Teacher_IDSkill_ID 是其类(class)表的外键。

我的播种机是这样的

protected override void Seed(Ability_Examen_ASP.Models.AbilityDbContext context)
    {
        if (!context.Skills.Any())
        {
            context.Skills.Add(new Models.Skill { SkillName = "PHP" });
            context.Skills.Add(new Models.Skill { SkillName = "Java" });
            context.Skills.Add(new Models.Skill { SkillName = "Frans" });
            context.Skills.Add(new Models.Skill { SkillName = "Drupal" });
        }

        if (!context.Teachers.Any())
        {
            context.Teachers.Add(new Models.Teacher
            {
                FirstName = "Joris",
                LastName = "Hens",
                Campus = "Kruidtuin",
                Password = "testpass",
                Email = "Joris.Hens@"
            });
            context.Teachers.Add(new Models.Teacher
            {
                FirstName = "Anne",
                LastName = "Van Goetem",
                Campus = "Kruidtuin",
                Password = "testpass",
                Email = "Anne.Vangoetem@"
            });
            context.Teachers.Add(new Models.Teacher
            {
                FirstName = "Sofie",
                LastName = "Krekels",
                Campus = "De Ham",
                Password = "testpass",
                Email = "Sofie.Krekels@"
            });
            context.Teachers.Add(new Models.Teacher
            {
                FirstName = "Robby",
                LastName = "Vanelderen",
                Campus = "De Vest",
                Password = "testpass",
                Email = "Robby.Vanelderen@"
            });
        }

        if (!context.TeacherSkills.Any())
        {
            context.TeacherSkills.Add(new Models.TeacherSkill
            {
                Teacher_ID = 1,
                Skill_ID = 1,
            });
            context.TeacherSkills.Add(new Models.TeacherSkill
            {
                Teacher_ID = 1,
                Skill_ID = 4,
            });
            context.TeacherSkills.Add(new Models.TeacherSkill
            {
                Teacher_ID = 2,
                Skill_ID = 2,
            });
            context.TeacherSkills.Add(new Models.TeacherSkill
            {
                Teacher_ID = 3,
                Skill_ID = 3,
            });
            context.TeacherSkills.Add(new Models.TeacherSkill
            {
                Teacher_ID = 4,
                Skill_ID = 4,
            });
        }

    }

老师和技能种子没有任何问题,但我无法将任何技能种子给老师。

它没有给我任何错误,我也不确定哪里出了问题。

希望大家帮帮忙,谢谢!

最佳答案

添加调用

context.SaveChanges();  

在你培养教师的地方和你要培养教师技能的地方之间。这应该提交 Skills 和 Teachers 集合,这样您对键列(标识值)的假设将被 INSERT 执行时实际生成的那些所取代。

此外,可以在 TeacherSkills 构造函数中检索和使用实际教师和技能的 ID 值,以摆脱种子代码中的“魔数(Magic Number)”1-4。

关于c# - 播种多对多数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640542/

相关文章:

javascript - 或者 JavaScript 中的声明?

asp.net-mvc - 如何使用 MVC 从另一个屏幕移动到另一个屏幕?

c# - 复杂(多架构) Entity Framework 对象映射,用于办公室管理应用程序的无缝集成(并最终替换)

c# - Entity Framework 4.1 通过设置外键映射关系

c# - 注入(inject)的 IPrincipal 是匿名的,但 Web API Controller 用户对象已通过身份验证

c# - 在.NET 中是否有一类用于设置HttpResponse.StatusDescription 的常量?

c# - 静态方法线程安全

asp.net - Entity Framework : how to solve "FOREIGN KEY constraint may cause cycles or multiple cascade paths"?

entity-framework - Entity Framework 更改 key 类型

c# - 嵌套文档上的 MongoDb TTL 是可能的吗?