2009-10-08 69 views
0

我想實現我已經看到並使用的搜索邏輯。它的工作原理是這樣的:使用實體框架的存儲過程搜索

有存儲過程加載到實體框架中,它用作C#中的方法,它需要參數才能執行搜索。該方法返回視圖列表(DB視圖)。列表中的視圖只是需要在網格中顯示的一些屬性。例如,我正在通過一些參數搜索用戶,結果是用戶列表。而不是返回User對象列表我使用的vUser視圖僅包含將在列表中列出的屬性。例如ID,姓名和姓氏。但仍然數據是正確的,因爲存儲過程搜索是針對數據庫中的表用戶完成的。

視圖也作爲實體框架中的C#對象加載。 我正在使用SQL Server 2005.

我該如何實現它?

非常感謝。

+0

我如何做到這一點? – eomeroff 2009-12-14 22:36:40

回答

1

是的,你可以做到這一點。

不幸的是,在EF 3.5中,您需要創建一個EntityType(它只包含您在存儲過程中投影的列),以便創建公開存儲過程結果的FunctionImport

因此步驟:

  1. 確保您包括創建模型(或刷新從數據庫模型時)

  2. 創建恰好返回的形狀相匹配的EntityType當存儲過程存儲過程

  3. 創建一個FunctionImport,使用該存儲過程並說它返回您在(2)中創建的EntityType

在EF 4.0,你可以跳過步驟(2),因爲EF工具自動完成此過程。

更多背景信息請參閱本post from Julie

希望這有助於

亞歷

+0

該函數將返回什麼?請問這是一個視圖列表,它具有與我在存儲過程中的SQL代碼中選擇的屬性相同的屬性? – eomeroff 2009-10-08 17:44:33

+0

那麼,如果當你說視圖列表,你是指視圖中的行列表,那麼是的。 – 2009-10-08 17:57:51

+0

是是,非常感謝 – eomeroff 2009-10-08 19:25:45