我正在研究一項功能,其中用戶可以在每個參數中選擇多個參數並使用多個值。我試圖找出一種方法來在我的應用程序中使用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. 構建動態T-SQL查詢在一個存儲過程
- 3. 用if存儲過程動態查詢
- 4. 設計建議:Entity Framework對存儲過程有用嗎?
- 5. Mysql存儲過程動態查詢
- 6. 如何調用在Entity Framework中返回動態列的存儲過程?
- 7. 是否有構建Entity Framework存儲過程的數據庫管理員指南?
- 8. 如何使用Entity Framework 3.5下的存儲過程
- 9. 如何使用存儲過程獲取Entity Framework中的身份?
- 10. 存儲過程使用Entity Framework激發並遺忘
- 11. 如何在Entity Framework 4中使用我的存儲過程?
- 12. 使用列表輸入構建SQL存儲過程查詢
- 13. 如何從動態Entity Framework存儲過程返回表格字符串數據?
- 14. 動態查詢在存儲過程中創建的臨時表
- 15. 使用存儲過程執行動態查詢結果
- 16. pl/sql - 在存儲過程中使用動態查詢
- 17. db2存儲過程動態創建選擇查詢
- 18. 在創建動態查詢存儲過程的MySQL
- 19. 空間查詢使用LINQ和Entity Framework
- 20. Mysql根據邏輯在存儲過程中動態構建查詢字符串
- 21. Entity Framework在調用存儲過程時會看到SQL語句
- 22. ASP.NET MVC4 with Entity Framework 6調用存儲過程
- 23. 從Entity Framework調用複雜的存儲過程?
- 24. F#動力組和Entity Framework:如何重構兩個查詢
- 25. 動態構建查詢
- 26. 通過存儲過程使用.NET ORM工具(如Entity Framework,LinqToSql)的好處
- 27. 使用Slick 2.1.0構建動態查詢
- 28. 使用LINQ構建動態查詢
- 29. 使用LINQ構建動態查詢
- 30. 存儲過程從動態sql創建存儲過程