INSERT语句与FOREIGN KEY约束冲突FK_dbo.Courses_dbo.StudentCourses_CourseId

时间:2018-03-02 15:13:55

标签: c# entity-framework

我正在尝试在dbo.Course表中插入一些值但不幸的是我收到了以下错误,我试图找到一个解决方案,但我不明白如何将其应用于我的代码。

我的例外是:

INSERT语句与FOREIGN KEY约束“FK_dbo.Courses_dbo.StudentCourses_CourseId”冲突。冲突发生在数据库“MyStudentsWebSite11”,表“dbo.StudentCourses”,列'Id'。

我尝试运行以下Query,一旦到达SaveChanges,它就会崩溃:

ContainerResponseContext

第一张表

UneversityContext db = new UneversityContext();
var courses = new List<Course>
                    {
         new Course{CourseId=1, enter code CourseName="DotNet",StartDate="04/2018",CourseNumber="1111"},
                        new Course{CourseId=2, CourseName="WEB",StartDate="07/2018",CourseNumber="2222"},
                        new Course{CourseId=3,CourseName="Mobile",StartDate="08/2018",CourseNumber="3333"},
                         new Course{CourseId=4,CourseName="Mobile",StartDate="11/2018",CourseNumber="4444"},
                         new Course{CourseId=5,CourseName="WEB",StartDate="02/2018",CourseNumber="55555"}
                    };
                   courses.ForEach(x => db.Courses.Add(x));              
                      db.SaveChanges(); 

第二张表

public class Course
    {
        [Key]
        public int CourseId { get; set; }

        public string CourseName { get; set; }

        public string StartDate { get; set; }

        public string CourseNumber { get; set; }
    }

2 个答案:

答案 0 :(得分:1)

如果您正在执行此代码,则您的外键FK_dbo.Courses_dbo.StudentCourses_CourseId不允许添加任何课程,其中没有具有匹配ID的StudentCourses中的记录。这对我来说似乎是一个奇怪的外键。它应该是相反的方式:如果没有匹配的课程记录,您将无法添加StudentCourses记录。

答案 1 :(得分:0)

我认为你没有正确的ClassCourseCourse。

你可以让课程和学生有多对多的映射(课程有一个学生集合,学生有一系列课程),

或者您有StudentCourse,只有一个学生和一个课程,并从学生和课程到学生课程进行一对多的映射。但是,如果您有其他属性,例如得分或序列号等,这只是有意义的。