c# 中 SelectCommandTimeout 属性的 tableadapters 问题

发布于 2024-11-01 11:06:57 字数 303 浏览 2 评论 0原文

我想增加从表适配器检索数据的时间。我该如何设置?我尝试使用这个:

http://www.codeproject.com/KB/database/TableAdaptrCommandTimeout。 aspx

但是,_commandCollection.Length 设置为 null,因此我无法设置 CommandTimeout

有什么想法吗?

I want to increase the time to retrieve data from my tableadapter. How do i set it? I tried using this:

http://www.codeproject.com/KB/database/TableAdaptrCommandTimeout.aspx

However, the _commandCollection.Length is set to null therefore i am unable to set the CommandTimeout

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

時窥 2024-11-08 11:06:57

在设置超时之前,您必须在 tableAdapter 上调用 GetData() 方法,否则 SelectCommand 将不会被初始化。

protected void setAdapterTimeout(SqlDataAdapter da, int timeOut = 120)
    {

        if (da.SelectCommand != null)
            da.SelectCommand.CommandTimeout = timeOut;

    }

然后像这样调用它:

 //Replacing AccessoryTableAdapter with your table Adapter
 AccessoryTableAdapter ata = new AccessoryTableAdapter();
 setAdapterTimeout(ata.Adapter);

编辑:扩展方法很酷!

public static class Extensions
{
    public static void setAdapterTimeout(this SqlDataAdapter da, int timeOut = 120)
    {
        if (da.SelectCommand != null)
            da.SelectCommand.CommandTimeout = timeOut;
        if (da.InsertCommand != null)
            da.InsertCommand.CommandTimeout = timeOut;

    }
}

然后调用它:

 AccessoryTableAdapter ata = new AccessoryTableAdapter();
 ata.Adapter.setAdapterTimeout(120);

You have to call the GetData() Method on your tableAdapter before you can set the timeout, othewise the SelectCommand will not have been initialized.

protected void setAdapterTimeout(SqlDataAdapter da, int timeOut = 120)
    {

        if (da.SelectCommand != null)
            da.SelectCommand.CommandTimeout = timeOut;

    }

Then call it like this:

 //Replacing AccessoryTableAdapter with your table Adapter
 AccessoryTableAdapter ata = new AccessoryTableAdapter();
 setAdapterTimeout(ata.Adapter);

EDIT: Extension Methods are cool!

public static class Extensions
{
    public static void setAdapterTimeout(this SqlDataAdapter da, int timeOut = 120)
    {
        if (da.SelectCommand != null)
            da.SelectCommand.CommandTimeout = timeOut;
        if (da.InsertCommand != null)
            da.InsertCommand.CommandTimeout = timeOut;

    }
}

then call it:

 AccessoryTableAdapter ata = new AccessoryTableAdapter();
 ata.Adapter.setAdapterTimeout(120);
千柳 2024-11-08 11:06:57

就我而言,这工作正常。
唯一的想法是在原始 codeproject 解决方案中添加这行代码:

if ((this._commandCollection == null)) this.InitCommandCollection();

因此,SelectCommandTimeout 属性变为:

    // Add this check before the assign step...
    if ((this._commandCollection == null)) this.InitCommandCollection();
    for (int i = 0; i < this._commandCollection.Length; i++)
    {
       if ((this._commandCollection[i] != null))
       {
          ((System.Data.SqlClient.SqlCommand)
          (this._commandCollection[i])).CommandTimeout = value;
       }
    }
   }
 }

In my case this work correctly.
The only think is adding this row of code at the original codeproject solution:

if ((this._commandCollection == null)) this.InitCommandCollection();

So, the SelectCommandTimeout propery become:

    // Add this check before the assign step...
    if ((this._commandCollection == null)) this.InitCommandCollection();
    for (int i = 0; i < this._commandCollection.Length; i++)
    {
       if ((this._commandCollection[i] != null))
       {
          ((System.Data.SqlClient.SqlCommand)
          (this._commandCollection[i])).CommandTimeout = value;
       }
    }
   }
 }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文