我正在将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/