我正在研究一項功能,其中用戶可以在每個參數中選擇多個參數並使用多個值。我試圖找出一種方法來在我的應用程序中使用C#實現這個功能,實體框架將實體映射到存儲過程。由於安全原因,我的應用程序必須通過只有存儲過程的代理數據庫訪問數據庫。因此,我的實體被映射到存儲過程以進行插入,更新和選擇。 最終,我需要將用戶選擇的過濾器傳遞給查詢數據庫的存儲過程。我想到的解決方案之一是將所有數據檢索到我的業務層,並使用linq進一步過濾。但是這並不理想,因爲在內存評價者中被過濾的數據量比在更適合做這種複雜查詢的數據庫中要大。 我已經看到過使用linq構建動態查詢的帖子,但是在這些帖子中,實體被映射到表格,這使得它更容易。 在這裏的任何幫助將不勝感激。 謝謝, sirkal使用c#+ Entity Framework構建動態查詢+存儲過程
1
A
回答
0
EF(和LINQ爲此事)使用延遲執行。您可以使用IQueryable(Google搜索時間?)並在您構建的對象中創建過濾條件(您可以在沒有對象的情況下執行此操作,但認爲可重用),從而輕鬆創建動態查詢。
至於SQL sproc,還可以通過傳入所有可能更改過濾器的項目並讓SQL動態地對數據進行操作來生成結果集來解決它。
要選擇哪個?這實際上取決於你的團隊核心能力在哪裏。我更喜歡C#代碼,主要是因爲熟悉度(花費數年時間做sprocs,但動態sprocs可能是一個皇家痛苦)。
現在,你需要警惕的一件事是結束於服務器無法輕易調整的動態查詢(如SQL Server中的統計信息,儘管其他RDBMS使用相似的概念)。例如,我看到的一個與LINQ to SQL有關的問題是動態查詢,導致SQL執行得不夠理想,需要大量的DBA手持式操作。
相關問題
- 1. 使用動態查詢存儲過程
- 2. 設計建議:Entity Framework對存儲過程有用嗎?
- 3. Mysql存儲過程動態查詢
- 4. 如何使用存儲過程獲取Entity Framework中的身份?
- 5. pl/sql - 在存儲過程中使用動態查詢
- 6. 使用存儲過程執行動態查詢結果
- 7. Mysql根據邏輯在存儲過程中動態構建查詢字符串
- 8. F#動力組和Entity Framework:如何重構兩個查詢
- 9. Entity Framework在調用存儲過程時會看到SQL語句
- 10. 通過存儲過程使用.NET ORM工具(如Entity Framework,LinqToSql)的好處
- 11. 使用Slick 2.1.0構建動態查詢
- 12. 存儲動態JPA查詢
- 13. 分析Entity Framework 4動態查詢的最佳方法?
- 14. 動態數據透視查詢查看/存儲過程?
- 15. 使用存儲過程或查詢
- 16. 使用LINQ查詢與存儲過程
- 17. 如何從Entity Framework執行系統存儲過程?
- 18. 首先使用Entity Framework 6代碼調用Oracle中的存儲過程
- 19. Knex查詢構建 - 動態構建鏈
- 20. Entity Framework 6爲複雜存儲過程返回錯誤類型
- 21. TSQL創建存儲過程使用c#
- 22. 由存儲過程或函數生成的動態查詢
- 23. 在Entity Framework中使用帶額外參數的存儲過程的策略4
- 24. 如何使用存儲過程在Entity Framework 4中返回單個實體?
- 25. 爲什麼Entity Framework不能查看我的存儲過程的列信息?
- 26. RavenDB - 使用OR過濾器構建動態查詢
- 27. SQL查詢/存儲過程
- 28. 在SQL Server中動態查詢的存儲過程
- 29. 從另一個存儲過程動態調用存儲過程
- 30. c#,使用動態查詢