Visual Studio で dbml 自動生成を使用すると、通常、ストアド プロシージャの呼び出しは次のようになります。
[global::System.Data.Linq.Mapping.FunctionAttribute(Name="MYDB.ui_index_group_upd")]
public int ui_index_group_upd([global::System.Data.Linq.Mapping.ParameterAttribute(DbType="Int")] System.Nullable<int> group_id, [global::System.Data.Linq.Mapping.ParameterAttribute(DbType="VarChar(32)")] string group_code)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), group_id, group_code);
return ((int)(result.ReturnValue));
}
これは通常、次のように呼ばれます....
using (var db = new L2SDataContext(base._connectionString))
{
var result = db.ui_index_group_upd(1, "foo");
}
これで問題ありません。
ただし、私が達成しようとしているのは、問題が発生した場合に渡されたすべてのパラメーターの値と proc の名前を記録するような方法で、そのようなすべてのメソッド呼び出しをエラー トラップおよび報告するグローバルな方法です。
メソッドごとに特定のコード proc コードを記述したくないし、明らかな理由から autogen コードを変更したくないことは間違いありません。
私は自分の呼び出しと dbml メソッドの間のレイヤーを考えていますが、おそらく誰かが同様の問題に遭遇したのではないかと思ったので、合理的な答えが得られるまで一日を過ごす前にそれを公開したいと思いました。トリックは、パラメーターやプロシージャ名などを列挙する優雅な方法だと思います
これが理にかなっていることを願っています。すべてのフィードバックに感謝します