2017-02-03 37 views
1

我認爲實體框架不具備存儲過程很好的支持。我想有一個更好的存儲過程映射器。有沒有一種方法來映射SQL Server中的存儲過程在C#沒有實體框架?

的問題是:我的存儲過程有一個IF聲明。在IF裏面,我正在做SELECT。當我的代碼沒有進入IF時,存儲過程不會選擇數據。當我不選擇數據時,實體框架的自動生成的代碼崩潰。

+1

實體框架確實有存儲過程的良好支持。你想要映射什麼?簡要說明。 – Rangesh

+0

我的存儲過程有一個IF語句。在IF中我正在做SELECT。當我的代碼沒有進入IF時,存儲過程不會選擇數據。當我不選擇數據時,實體框架自動生成的代碼崩潰。 –

回答

3

的問題是:我的存儲過程有一個IF語句。在IF中我正在做SELECT。當我的代碼沒有進入IF時,存儲過程不會選擇數據。當我不選擇數據時,實體框架自動生成的代碼崩潰。

因爲期望x類型的結果集(無論是什麼類型),EF會崩潰,但如果存儲過程沒有通過if條件,它將不會得到任何結果。解決這個問題的方法很簡單:當條件不通過時,返回一個空的結果集,它與存儲過程中的列數完全相同。存儲過程的每個分支都應返回相同的結果集或返回錯誤,但您需要處理應用程序端的錯誤。

+0

你對EF非常友善。在代碼中,我們可能希望一個方法返回一個集合返回[空集(http://stackoverflow.com/questions/1969993/is-it-better-to-return-null-or-empty-collection),而比空。但我們可能不應該指望它。 – bbsimonbb

相關問題