該文件主要是在記錄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思想,我以爲只是一種臨時的方案。 但願有人可以提出一種能加合理的方案。對象