C# EF6 更新对象

    该文件主要是在记录C#过程当中级联更新问题。该问题主要是在对数据库中的对象中的关联进行更新,致使出现了极大的性能问题,但愿有这方面的专家能给出建设性的意见和方向。
数据库

class Student
{
     int id;
     string name;
     
     ICollection<Course> Courses;
 }
 class Course
 {
     int id;
     int studentId;
 }

若是我须要更新 Student 类的courses 列表时, 首先清除或者移除列表中的数据,而后添加并更新。c#

stu.ClassName.Clear();

结果出现异常错误 性能

 其实就是不能经过此种方法删除一对多的关系。因而就老实的 经过 context 去删除。测试

context.Courses.RemoveRange(stu.Courses);

经过此种方法确实达到了目的,删除了数据,可是测试,发现1000 多条的数据,居然发现耗费了大量的时间。个人状况比较复杂,原来只用了 5 mins, 结果这么已处理时间达到了40 mins以上。我直接无语。。。(我的认为耗时主要集中在更新对象上),因此我只能另寻他法:多遍历一次,而后经过SQL处理删除,而后从新加载改EF Model.code

context.Database.ExecuteSqlCommand("delete from course where studentid="+id);(注意经过Sql操做并不会更新模型,当执行Model 和 SQL 混合使用时,将致使模型保存时出现错误。

经过上面确实可以解决了效率问题,可是已经失去了OOP思想,我以为只是一种临时的方案。 但愿有人可以提出一种能加合理的方案。对象

相关文章
相关标签/搜索