我正在尝试在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; }
}
答案 0 :(得分:1)
如果您正在执行此代码,则您的外键FK_dbo.Courses_dbo.StudentCourses_CourseId不允许添加任何课程,其中没有具有匹配ID的StudentCourses中的记录。这对我来说似乎是一个奇怪的外键。它应该是相反的方式:如果没有匹配的课程记录,您将无法添加StudentCourses记录。
答案 1 :(得分:0)
我认为你没有正确的ClassCourseCourse。
你可以让课程和学生有多对多的映射(课程有一个学生集合,学生有一系列课程),
或者您有StudentCourse,只有一个学生和一个课程,并从学生和课程到学生课程进行一对多的映射。但是,如果您有其他属性,例如得分或序列号等,这只是有意义的。