gpt4 book ai didi

c# - Linq 映射 dbml - 捕获存储的过程参数以进行错误报告

转载 作者:行者123 更新时间:2023-11-30 12:31:23 25 4
gpt4 key购买 nike

在 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 代码,并且出于明显的原因绝对不想修改 autogen 代码。

我在考虑我的调用和 dbml 方法之间的一层,但我认为也许有人遇到过类似的问题,所以我想我会把它放在那里,然后再花一天时间弄乱直到我得到一个合理的答案.我认为技巧是枚举参数和过程名称等的优雅方式

我希望这是有道理的,感谢所有反馈

最佳答案

我认为用其他东西替换 MSLinqToSqlGenerator 是最干净的解决方案,可以通过多种方式完成。例如,您可以

  1. 使用类似 T4 Toolbox: LINQ to SQL classes generator 的工具或 Reegenerator并修改提供的模板以满足您的需要。这可能是最简单的方法。

  2. T4 生成代码使用自定义模板。您将需要创建一个 T4 模板,它将 use XML data来自 .DBML 文件。您可能需要通过将自定义工具属性设置为空白来禁用 DBML 代码生成。缺点是每次修改 .DBML 文件后都需要运行 T4 生成。

  3. 创建 custom tool使用 .DBML 文件中的 XML 数据和一些模板解决方案(可能是 T4 或 XSLT)为您生成代码。这种方法可以说是最灵活的方法,唯一的缺点是您必须在每个开发人员的机器上使用自定义工具。

我不确定什么最适合您的情况,但我可能会考虑先使用 T4 Toolbox。它使用的 T4 模板非常标准,可以根据需要轻松修改。

关于c# - Linq 映射 dbml - 捕获存储的过程参数以进行错误报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13622235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com