2013-01-18 14 views
11

データベースファーストを使用してEntity Frameworkにマップされたストアドプロシージャがあります。これは、ストアドプロシージャを実行するために呼び出すことができる強く型付けされたメソッドを作成します。私は重要な問題に遭遇しました。しかし、ストアドプロシージャで定義されているデフォルトのパラメータで作成されたこれらのメソッドを呼び出す方法はありません。これは、以下を意味します。Entity Framework - 既定のパラメータでストアドプロシージャを呼び出す

a)デフォルトのパラメータ値が変更された場合、脆いメソッド呼び出しにデフォルトのパラメータを手動で追加する必要があります。

b)メソッドオーバーロードを手作業で記述します。これは、基本的に、データベースからモデルを生成する利点を基本的に排除します。

この問題を解決する方法があれば、誰にも分かりますか?

ありがとうございました。

+0

エンティティプロパティのデフォルト値は、プロパティウィンドウからいつでも設定できます。それは役に立ちません。 –

+0

これは、デフォルト値を手作業で入力することになります。デフォルト値を変更した場合、自動的にモデルとの同期を保つことはできません。 – MgSam

+1

サーバからのデフォルト値を提供するprocsを書くことができますか? –

答えて

6

2013年1月現在、Entity Frameworkでこれを行う方法はありません。

機能要求hereを開封しました。

+0

多分あなたはすでにそれを知っているかもしれませんが、マイグレーションのために彼らはあなたのチケットを閉じてしまいました。あなたがもう一度それを考慮したいと思えば、githubコミュニティで再度開くべきですhttps://github.com/aspnet/EntityFramework6/問題 – Sycraw

3

ここではちょっとした回避策があります。オプションのパラメータをサポートする機能がEFにあるかどうかはわかりませんが、ストアドプロシージャを変更したい場合は、エミュレートすることができます。

ストアドプロシージャの定義のデフォルト値をNULLに変更してから、プロシージャ本体にNULLパラメータを希望のデフォルト値に置き換えることができます。その後、EFを使用しているコードから、nullを渡して、デフォルトを使用していることを示します。この方法では、少なくともデフォルトはSP自体でのみ定義されます。

もちろん、NULLは「帯域外」の値になります。実際にSPに渡すことはできません(SPを変更して将来のすべてを保証する

+0

はい、私は実際にこれを行うことを提案しましたが、それは他の合併症を引き起こしますので、残念なことにオプションではありません。 – MgSam

関連する問題