2017-02-03 1 views
1

私はEntity Frameworkがストアドプロシージャを適切にサポートしていないと思います。私はより良いストアドプロシージャマッパーをしたいと思います。SQL ServerからストアドプロシージャをC#でエンティティフレームワークなしでマップする方法はありますか?

問題は:私のストアドプロシージャはIFステートメントを持っています。 IFの中では、私はSELECTをやっています。私のコードがIFの中に入ってこないと、ストアドプロシージャはデータを選択しません。データを選択しないと、Entity Frameworkの自動生成コードがクラッシュします。

+1

Entity Frameworkはストアドプロシージャを良好にサポートしています。何を地図にしようとしていますか?それを要約する。 – Rangesh

+0

私のストアドプロシージャにIF文があります。 IFの中で私はSELECTをやっています。私のコードがIFの中に入っていないとき、ストアドプロシージャはデータを選択しません。データを選択しないと、エンティティフレームワークが自動生成されたコードがクラッシュします。 –

答えて

3

問題は次のとおりです。私のストアドプロシージャにIF文があります。 IFの中で私はSELECTをやっています。私のコードがIFの中に入っていないとき、ストアドプロシージャはデータを選択しません。データを選択しないと、エンティティフレームワークが自動生成されたコードがクラッシュします。

EFがクラッシュそれは(あなたのタイプは何でも)タイプxの結果セットを期待しているが、あなたのストアドプロシージャは、あなたの場合は条件に合格しないならば、それは何を取得していないので。これを解決する方法は簡単です:条件が合格しなかった場合は、ストアドプロシージャの列数とまったく同じ空の結果セットを返します。ストアドプロシージャのすべてのブランチで同じ結果セットを返すか、エラーを返す必要がありますが、アプリケーション側でエラーを処理する必要があります。

+0

あなたはEFに非常に親切です。コードでは、コレクションを返すメソッドが[空のコレクション](http://stackoverflow.com/questions/1969993/is-it-better-to-return-null-orempty-collection)を返すことを期待していますnullより。しかし、おそらくそれを期待してはいけません。 – bbsimonbb

関連する問題