0

近い将来、私たちはストアド プロシージャと結婚しているので、仕事で Data Access Application Block 5.0 を使用して評価しています。シンプルさとこれに含まれる Mapper が気に入っていますが、私が気に入らないのは、パラメーターの配列を指定する方法がないように思われることです。条件に基づいてパラメータを自動的に作成するストアド プロシージャ コールに追加します。検索する必要がある 1 つ以上のプロパティを指定できる検索顧客機能を想像してみてください (null 許容フィールドで作成されたストアド プロシージャがあるとします)。

私がやりたいことは次のようなものです:

var customerQuery = new { FirstName = "John", LastName = "Doe" }
var result = db.ExecuteSprocAccessor("SearchCustomers", customerQuery);

匿名オブジェクトをさまざまなSqlParameterオブジェクトに変換します。

このようなことは可能ですか?MSDN で見た例では、個々のパラメーターを手動で指定しているだけで、どのパラメーターがどれであるかはわかりません。

4

1 に答える 1

0

Enterprise Library Data Access Application Block は、さまざまなマッパー (出力マッパー、結果セット マッパー、パラメーターマッパー) をサポートしています。パラメータ マッパーは、この場合に関心のあるものです。SqlDatabase または OracleDatabase を使用している場合は、デフォルトのパラメーター マッピング メカニズムがサポートされます。デフォルトのマッピングは単純化されており、パラメーターの位置に基づいていますが、必要に応じて独自のマッパーを作成できます。

2 つの int パラメーターを受け取るストアド プロシージャを考えてみましょう。コード スニペットは次のようになります。

var logs = db.ExecuteSprocAccessor<Log>("usp_getLogs", 
               new object[] { 1, -1 } // parameters as array
           ).ToList();

適切なオブジェクト配列を作成するために、いくつかのヘルパー メソッドを作成できます。

于 2012-05-02T06:06:40.570 に答える