【发布时间】:2019-11-24 09:53:45
【问题描述】:
我需要编写将在我的 EF 数据库中执行插入和删除的方法。
当我尝试添加新对象时,我收到以下错误消息:
SqlException:INSERT 语句与 FOREIGN KEY 约束“FK_dbo.StudentCourses_dbo.Courses_CourseID”冲突。冲突发生在数据库“Demo.EmployeeDBcontext”、表“dbo.Courses”、列“CourseID”中。
我的课:
class Student
{
public int StudentId { get; set; }
public string StudentName { get; set; }
publicIList<StudentCourse>StudentCourses { get; set; }
}
class Course
{
public int CourseID { get; set; }
public string CourseName { get; set; }
public IList<StudentCourse>StudentCourses { get; set; }
}
//Many to many entity
class StudentCourse
{
//Navigation properties
public Course Course { get; set; }
public Student Student { get; set; }
//composite key
[Key, Column (Order=1)]
public int StudentID { get; set; }
[Key, Column (Order=2)]
public int CourseID { get; set; }
public DateTime EnrolledDate { get; set; }
}
主要方法:
using(var db = new EmployeeDBcontext())
{
StudentCourse stcourse1 = new StudentCourse();
Student st1 = new Student("Francis");
Course cs1 = new Course("Bio");
stcourse1.StudentID = st1.StudentID;
stcourse1.CourseID = cs1.CourseID;
stcourse1.EnrolledDate = new DateTime(2012, 1, 1);
db.StudentCourses.Add(stcourse1);
db.Courses.Add(cs1);
db.Student.Add(st1);
Student st2 = new Student("Jack");
Course cs2 = new Course("Hist");
db.Student.Add(newStud);
db.Courses.Add(newCor);
db.SaveChanges();
//Method calls
Remove(11)
AddNew(st2 , cs2 , new DateTime(2018, 1, 1));
}
从数据库中删除的方法:
public static void Remove(int csID)
{
using (var db=new EmployeeDBcontext())
{
StudentCourse temp = new StudentCourse();
foreach (var item in db.StudentCourses)
{
if(item.StudentID == csID )
{
temp = item;
}
}
db.StudentCourses.Remove(temp);
db.SaveChanges();
}
}
新增方法:
public static void AddNew(Student s, Course c,DateTime d)
{
using (var db = new EmployeeDBcontext())
{
StudentCourse newCourse = new StudentCourse();
newCourse.StudentID = s.StudentID;
newCourse.CourseID = c.CourseID;
newCourse.EnrolledDate = d;
db.StudentCourses.Add(newCourse);
db.SaveChanges();
}
}
【问题讨论】:
标签: c# .net entity-framework many-to-many