[英]How to perform CRUD operation in EF
我需要編寫將在我的 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();
}
}
在您的表 dbo.StudentCourses_dbo 中,它具有對另一個表的外鍵引用。 您必須首先構建包含主鍵的表。 即 dbo.Courses。
當前,您正在嘗試在 dbo.StudentCourses_dbo 表中插入數據,該表在 dbo.Courses 中沒有 CourseID 引用。 即,在嘗試將數據插入包含外鍵的子表之前,您必須將數據插入包含主鍵的父表中。
因此,在您的示例中,您必須先創建課程實體以添加課程,然后使用創建的課程 ID 添加學生。這應該可以解決您的問題。 希望這對你有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.