2012-04-30 3 views
0

近い将来私たちがストアドプロシージャと結婚しているので、データアクセスアプリケーションブロック5.0を使用して評価しています。私はシンプルさとこれに含まれているMapperが好きですが、私をオフにしているのは、パラメータの配列を指定する方法がないか、あなたの基準に基づいて自動的にパラメータを作成するストアドプロシージャコールを呼び出します。検索顧客の機能を想像してください。そこでは、検索する必要のある1つ以上のプロパティを指定できます(格納可能なprocがすでにNULL値のフィールドで作成されていると仮定します)。Microsoftエンタープライズライブラリ5.0データアクセス - 「例でクエリする」機能は可能ですか?

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

と様々なSqlParameterオブジェクトになって匿名オブジェクトを持っている:私がやりたい何

はこのようなものです。

これは可能でしょうか?私がMSDNで見た例は、どのパラメータがどのようなものかわからず、手作業で個々のパラメータを指定するように見えます。

答えて

0

エンタープライズライブラリデータアクセスアプリケーションブロックは、さまざまなマッパー(出力マッパー、結果セットマッパー、およびParameter Mappers)をサポートしています。パラメータマッパーはこの場合にあなたが興味を持っているものです。 SqlDatabaseまたはOracleDatabaseを使用している場合は、デフォルトのパラメータマッピングメカニズムがサポートされています。デフォルトのマッピングは単純化されており、パラメータの位置に基づいていますが、必要に応じて独自のマッパーを作成することもできます。あなたは適切なオブジェクトの配列を作成するために、いくつかのヘルパーメソッドを構築することができ

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

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