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

相關文章
相關標籤/搜索