エンタープライズライブラリデータアクセスアプリケーションブロックを頻繁に使用するASP.NET 2.0アプリケーションがあります。要するに、SPの名前とともにSPのパラメータの配列を受け入れ、そのSPを呼び出すヘルパールーチンがあります。だから、効果的エンタープライズデータアプリケーションブロック、ストアドプロシージャおよび既定値を持つパラメータ
object[] parameters = string.IsNullOrEmpty(paramsString) ? null : jss.Deserialize<object[]>(paramsString);
DbCommand procProcess = Database.GetStoredProcCommand(_storedProc, parameters);
また、パラメータのデフォルト値に依存しているストアドプロシージャの多くを持っています。私はただのparam1とPARAM2に値を渡すことで、PROCを呼び出すことができるようにしたい、そのような
CREATE PROCEDURE MyProc
@param1 int
,@param2 int
,@param3 int = 0
AS
....
として通常デフォルト値を持つこれらのパラメータは、ストアドプロシージャ定義の最後に常にあります。しかし、私のパラメータは2つだけのparams、このコールを持っているofcourseの場合
DbCommand procProcess = Database.GetStoredProcCommand(_storedProc, parameters);
まだparam3を取り戻すだろうが、それにそのデフォルト値を割り当てることはありません。よって、
procProcess.ExecuteNonQuery();
は失敗します。
誰でも私がデフォルト値を指定してこれらのパラメータを省略したり、SQLに相当するキーワード「default」を何らかの形で渡すことができますか?