我正在将Visual Studio 2008与C#一起使用。

我有一个.xsd文件,它有一个表适配器。我想更改表适配器的命令超时。

谢谢你的帮助。

最佳答案

我今天对此问题进行了一些调查,并根据一些资料提出了以下解决方案。
这个想法是为表适配器创建一个继承的基类,这将增加表适配器中所有命令的超时,而不必重写太多现有代码。它必须使用反射,因为生成的表适配器不会继承任何有用的东西。如果您要删除我在构造函数中使用的内容并使用它,它将公开一个公共(public)函数来更改超时。

using System;
using System.Data.SqlClient;
using System.Reflection;

namespace CSP
{
    public class TableAdapterBase : System.ComponentModel.Component
    {
        public TableAdapterBase()
        {
            SetCommandTimeout(GetConnection().ConnectionTimeout);
        }

        public void SetCommandTimeout(int Timeout)
        {
            foreach (var c in SelectCommand())
                c.CommandTimeout = Timeout;
        }

        private System.Data.SqlClient.SqlConnection GetConnection()
        {
            return GetProperty("Connection") as System.Data.SqlClient.SqlConnection;
        }

        private SqlCommand[] SelectCommand()
        {
            return GetProperty("CommandCollection") as SqlCommand[];
        }

        private Object GetProperty(String s)
        {
            return this.GetType().GetProperty(s, BindingFlags.NonPublic | BindingFlags.GetProperty | BindingFlags.Instance).GetValue(this, null);
        }
    }
}

关于c# - 如何更改表适配器的命令超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1192171/

10-13 06:55