簡體   English   中英

在首次更新時優化GraphDiff性能(后續更新很快)

[英]Optimize GraphDiff performance on first update (subsequent updates are quick)

我正在與一個非常復雜的實體進行項目。 對象圖在樹中包含大約30個對象,分為兩個級別(有孩子的孩子)。

該實體在瀏覽器中進行管理,並作為Json發送到Web API端點。 端點將JSON序列化為復雜實體,然后存儲庫使用GraphDiff保存該實體。

首次保存時,UpdateGraph調用大約需要12秒,而在同一實體上的后續調用則需要毫秒。

我假設該圖是在EF DbContext中按實體緩存的。

有什么方法可以優化首次通話? 當我們使用GraphDiff時,只有幾種情況,也許有一種方法可以准備在應用程序中使用的圖形。

謝謝您的幫助。

我通過從GitHub克隆GraphDiff源代碼並對其進行修改來解決它。

GraphDiff動態地檢測實體的鍵,並且由於生成動態查詢表達式以檢索已經存在的對象的方式,因此每次將新實體(另一個主鍵)用於查詢時,EF都會重新編譯該表達式。 因此,僅當以前使用實體鍵時,才對緩存的查詢進行緩存。 在我的案例中,這些查詢編譯花費了很多時間(10秒鍾)。

修改了源代碼,以允許注入已經持久的實體。 這意味着,不是讓GrahpDiff從數據庫中檢索實體,而是以最佳方式檢索了該實體,並將其注入以合並到GraphDiff中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM