我們有一些搜索功能,可以從數據庫返回成千上萬的結果,儘管它只會獲取需要顯示到前10個記錄。當請求下一頁時,我們再次點擊db。它根據一組變量搜索我們的數據庫,然後可以改進這個搜索,這將導致另一個數據庫命中。查詢相當複雜。只讀搜索功能。存儲過程或IQueryable與POCO和Ef 4.0
我們一直在尋找與我們的整體架構相適應的不同方式。
第一種方法是使用存儲過程,可能會填充實體列表。這個存儲過程可能很快變得龐大而笨拙,但會有更好的性能。
第二種方法是將Linq to Entites或Entity SQL與實體框架4.0一起使用,並在我們概念層的代碼中創建查詢,並通過IQueryable填充POCO對象。這樣做的好處給我們的:
- 抽象:我們在應用程序的其他地方使用EF所以我們如果 可能喜歡的抽象模型 搜索。
- 類型安全,我們可以在鏈IQueryable的過濾器乾淨做我們想做的對象做oirentated方式
我們用這種方法主要關注的是性能。我們希望利用Parrlel LINQ to Entities,並且如果需要的話,可以在它上面扔更多的硬件。對於更清潔的開發模式而言,小的性能可謂不錯。
我們希望聽到人們對此的想法和建議......我們很多這些技術人員都是新手,所以想聽聽人們的經驗。
是的,我們正在定義返回一組結果,而不是全部,並實現一個緩存層。 我們要做一些性能測試來比較結果。我們將在EF中使用POCO,以使EF的足跡儘可能小 - 儘管我很欣賞這可能仍然很大。當然會慢一些,但很高興看到多少! –