テンプレート引数で Dapper の DynamicParamters オブジェクトを使用して、エンティティで引数を生成しています。ストアド プロシージャを呼び出した後、「プロシージャまたは関数 sp_MemberSave に指定された引数が多すぎます。」というエラーが表示されます。ビジネス ロジックなどの一部のエンティティに追加のプロパティがあります。dapper がストアド プロシージャの実際のパラメーターであるパラメーターのみを渡すようにする方法はありますか? Dapper は最初にストアド プロシージャを読み取り、次にパラメータを設定するようです。そのようにして、正しいものだけを使用します。テンプレート機能を使用してパラメーターを制限するにはどうすればよいですか?
3154 次
2 に答える
3
オブジェクトから適切なパラメーターの匿名型を作成してみてください... クラスに A、B、C、および D があり、A と B のみが必要な場合:
DynamicParameters(new { A = entity.A, B = entity.B });
于 2013-06-18T01:41:29.787 に答える
1
ここでのシナリオについて明確に説明できますか? (ではなくDynamicParameters
)エンティティを渡すだけの場合、この分析が行われます。つまり、SQL で使用されていることがわかるメンバーのみを追加します。完全なレキシカル SQL 分析を実行しないため、誤検知が発生する可能性があるため、コメント内のパラメーターは次のとおりです。conn.Execute("some sql", someEntity);
someEntity
-- removed by Fred: where row.Date < @StartDate
は引き続き含まれます (したがって、上記の例では、メンバーは実際にはStartDate
必要ない可能性がありますが、資格があります)。
でも; DynamicParameters
現在、カスタム実装を信頼しています。パラメータ分析チェックをこの時点の後に移動できると思いますが、最初に完全なシナリオを理解したいと思います.
于 2013-06-18T07:09:09.090 に答える