gpt4 book ai didi

c# - 设置在强类型数据集 TableAdapter 中使用的 CommandTimeout?

转载 作者:太空狗 更新时间:2023-10-29 20:22:38 25 4
gpt4 key购买 nike

前言:

因此,在过去 5 年左右的时间里,我的公司已经编写了各种应用程序和工具。不幸的是,许多开发这些应用程序的人都使用强类型数据集,我现在正在考虑在我们的商店中取缔它们...

使用强类型数据集的较大进程之一现在超时...我打算在接下来的几个月中使用 nHibernate 重写整个过程,但目前我需要更改超时以允许我们的用户使用这个过程,尽管速度很慢……不幸的是,微软将 commandtimeout 方法设为私有(private),因此我无法直接访问它们。

到目前为止,我遇到的唯一解决方案是为每个 TableAdapter 创建一个分部类,并在其中包含超时方法...

这很笨拙,因为这意味着要为相当多的 TableAdapter 添加部分类...

有人知道处理此问题的更有效方法吗?

最佳答案

我使用反射“解决”了这个问题。 (虽然 VS2010 模型允许公开 Adapter 属性,但 SelectCommand 等在 GetData 之前将为 null ,例如。)

我目前使用的“丑陋但功能强大的代码”:

void SetAllCommandTimeouts(object adapter, int timeout)
{
var commands = adapter.GetType().InvokeMember(
"CommandCollection",
BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic,
null, adapter, new object[0]);
var sqlCommand = (SqlCommand[])commands;
foreach (var cmd in sqlCommand)
{
cmd.CommandTimeout = timeout;
}
}

// unfortunately this still requires work after a TableAdapter is obtained...
var ta = new MyTableAdapter();
SetAllCommandTimeouts(ta, 120);
var t = ta.GetData();

由于缺乏通用的基础/接口(interface),实际上不可能更好地键入适配器(尽管可能是 Component)。

快乐编码。

关于c# - 设置在强类型数据集 TableAdapter 中使用的 CommandTimeout?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1028440/

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