【发布时间】:2014-11-19 05:18:39
【问题描述】:
我在尝试删除实体之间的关系并创建新关系时遇到此错误。
public partial class Course
{
public int Course_ID { get; set; }
/* CODE*/
public virtual ICollection<Student> Students { get; set; }
}
public partial class Student
{
public int Student_ID { get; set; }
/* CODE*/
public virtual ICollection<Course> Courses { get; set; }
public virtual ICollection<Book> Books { get; set; }
}
public partial class Book
{
public int Book_ID { get; set; }
public int Student_ID { get; set; }
/* CODE*/
public virtual Student Student { get; set; }
}
关系如下:
- Course * -- * Student(Student 和 Course 具有多对多关系,因此在规范化过程中创建了 Students_Courses 表 - 一个学生可以参与多个课程并且一个课程有多个学生)
- Student 1--* Book(Student 与 Book 是一对多的关系 - 一个学生有很多书,而一本书属于一个学生)
我正在尝试像这样更新学生实体:
public bool UpdateEntity(Entities.Student student)
{
using (var context = new Entities())
{
var record = context.Students
.Include("Courses")
.Include("Books")
.FirstOrDefault(c => c.Student_ID == student.Student_ID );
// record.Courses.ToList().ForEach(s => record.Courses.Remove(s));
// record.Books.ToList().ForEach(t => record.Books.Remove(t));
record.Courses.Clear();
record.Books.Clear();
record.Courses= student.Courses;
record.Books= student.Books;
context.SaveChanges();
return true;
}
}
应删除学生和课程之间的关系,而不删除实际课程。 更新书籍和学生之间的关系时,也应删除该书籍。
编辑 更新以使其更清晰
【问题讨论】:
-
您正在孤立您的
Cs,这会将外键B_ID设置为null,但它是一个不可为空的int。你真的想删除你的Cs 而不仅仅是孤立它们吗?如果不是,你想做什么? -
我正在尝试从数据库中完全删除 Cs,只删除 A 和 B 之间的关系(因此只需更新 AList 而不删除任何内容)
标签: c# .net asp.net-mvc entity-framework