1

我有一個小型項目,大約有20個表,其中行條目的內容大小最小,但表之間有很多關係。實體框架 - 增加CPU上的強大負載

我先使用代碼,將所有導航屬性設置爲虛擬。

今天我注意到,當我用Add方法將實體添加到DbSet中,並且實體具有大約6-7個外鍵時,僅向DbContext添加大約2000個實體(而不執行SaveChanges)需要大約30秒,CPU卡住在100%。

當實體具有太多虛擬導航屬性時,是否存在已知的性能下降?

回答

2

很可能EF只是跟蹤更改,並且由於您的實體不跟蹤實體,因此花費時間搜索相關實體。

我的第一個嘗試就是試着讓你的實體「改變跟蹤實體」,通過讓你的所有屬性變成虛擬的,而不僅僅是導航屬性。

+0

您是否有任何參考頁面可以閱讀有關所有虛擬屬性的更多信息? –

+0

http://blog.oneunicorn.com/2011/12/05/should-you-use-entity-framework-change-tracking-proxies/ –

+0

謝謝,看起來非常有用:) –