博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# EF6 更新对象
阅读量:6821 次
发布时间:2019-06-26

本文共 799 字,大约阅读时间需要 2 分钟。

hot3.png

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

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

如果我需要更新 Student 类的courses 列表时, 首先清除或者移除列表中的数据,然后添加并更新。

stu.ClassName.Clear();

结果出现异常错误 163142_veGl_867247.png

 其实就是不能通过此种方法删除一对多的关系。于是就老实的 通过 context 去删除。

context.Courses.RemoveRange(stu.Courses);

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

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

通过上面确实能够解决了效率问题,但是已经失去了OOP思想,我觉得只是一种临时的方案。 希望有人能够提出一种能加合理的方案。

转载于:https://my.oschina.net/RainyZou/blog/600812

你可能感兴趣的文章