13

DatabaseFirstを使用してEntityFrameworkにマップされたいくつかのストアドプロシージャがあります。ストアドプロシージャを実行するために呼び出すことができる、強く型付けされたメソッドを作成します。ただし、ストアドプロシージャで定義されたデフォルトのパラメータを使用して作成されたこれらのメソッドを呼び出す方法が見当たらないという、重大な問題が発生しました。これの意味は:

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

b)メソッドのオーバーロードを手動で記述します。これにより、そもそもデータベースからモデルを生成するメリットがなくなります。

この問題に対するより良い解決策があるかどうか誰かが知っていますか?

ありがとう。

4

2 に答える 2

5

2013 年 1 月の時点で、Entity Framework でこれを行う方法はサポートされていません。

ここで機能リクエストを開きました。

于 2013-01-25T14:58:24.303 に答える
3

これはハックな回避策です。EF にオプションのパラメーターをサポートする機能があるかどうかはわかりませんが、ストアド プロシージャを変更する場合は、エミュレートしてみてください。

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

欠点にはもちろんNULL、「帯域外」の値になることが含まれます。つまり、必要な場合は実際に SP に渡すことができません (SP を変更する必要があり、将来のすべての SP がこの奇妙な規則を使用するようにする必要があることに加えて)。

于 2013-01-18T16:31:09.610 に答える