使用實體框架我已經使用IDbCommandTreeInterceptor實施了軟刪除&數據級別限制。對於使用上下文的第一個查詢,攔截器會被擊中。但再次嘗試(刷新瀏覽器),攔截器會被跳過。我已通過使用SQL Server Management Studio更改某些數據來檢查數據是否正在緩存。反映的變化,但攔截器仍然跳過。可能導致這種情況發生的原因是什麼?爲什麼在第二次查詢時跳過了IDbCommandTreeInterceptor?
1
A
回答
1
according to the sources comments這是預期的行爲
命令樹兩種數據庫查詢,插入/更新/刪除 命令。然而,查詢 命令樹被模型緩存,這意味着該命令樹創建只發生在執行查詢 第一時間和該通知僅會在那個時候
發生,因爲你的攔截結果不能依賴的結果關於數據。
+0
可以理解,但仍有一點令人困惑的是,如果我運行新的查詢,攔截器會被擊中(對於舊查詢),然後通過EF重新運行舊查詢。但是,如果兩個查詢都已經執行過一次,那麼攔截器會被交替地跳過,直到執行新的查詢。然後Interceptor被新命令和兩個舊查詢命中。 –
+0
@JohnStaurt確實出乎意料。您是否修改了配置的queryCache部分(請參閱https://blogs.msdn.microsoft.com/premier_developer/2017/03/23/entity-framework-query-caching/)? – jbl
相關問題
- 1. 爲什麼Xcode似乎跳過了第二次scanf()調用?
- 2. 爲什麼在第二次運行select查詢時返回NULL
- 3. 爲什麼此循環的第二次迭代會跳過第一次掃描?
- 4. 爲什麼叫第二次
- 5. 爲什麼第一個查詢比第二個查詢快?
- 6. 爲什麼這個WMI查詢第二次被掛起?
- 7. Div跳到第二排?爲什麼?
- 8. 在第一次點擊時跳轉動畫,在第二次時跳轉正常
- 9. GHCi - 第二次跳過斷點
- 10. 條件第二次查詢
- 11. 爲什麼查詢錯過了第一行?
- 12. 爲什麼我的第二個「scanf」被跳過?
- 13. 爲什麼matlab跳過第二半標籤?
- 14. 爲什麼Processing.py跳過我的數組的倒數第二項?
- 15. android phonegap在第二次啓動時跳過主頁
- 16. 在第二次應用程序啓動時跳過主菜單
- 17. 地址跳過第二個查詢參數在HttpContext.Current.Request.Url.AbsoluteUri
- 18. 爲什麼第二次調用glBindBuffer?
- 19. 爲什麼第二次拒絕連接?
- 20. 爲什麼WalkingFileTree第二次更快?
- 21. 爲什麼AlertDialog.dialog.show()第二次崩潰?
- 22. 爲什麼F10第二次不工作?
- 23. 爲什麼第二次崩潰?
- 24. 爲什麼第二次連接在我的查詢中不起作用?
- 25. 它爲什麼跳過第一行?
- 26. 爲什麼循環跳過第一行?
- 27. 爲什麼takewhile()跳過第一行?
- 28. 爲什麼getline跳過第一行?
- 29. 爲什麼fgetcsv跳過第一行?
- 30. 如何在第一次運行後跳過第二個活動?
那麼通過攔截器跳過你的意思是目標實體是否真的被刪除而不是「軟」被刪除? – Evk
軟刪除後返回軟刪除對象 –
調試時也會跳過攔截器。 –