现在我们在大型系统中使用以下代码将行的列加载到数据表中,然后我们设置要插入的列的值(.add)。我们遇到的问题是这个方法没有加载具有SQL默认值的列,因此.add方法失败,因为在我们有默认值的列中不允许NULL。
有没有办法使用下面的方法,但是还为拥有它们的列加载了SQL默认值?
internal static DataTable FetchDataTableColumns(string tableName)
{
using (var conn = new SqlConnection(SQLHelper.CONN_STRING_NON_DTC))
{
conn.Open();
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = string.Format("SET FMTONLY ON; SELECT * FROM {0}; SET FMTONLY OFF;", tableName);
cmd.CommandType = CommandType.Text;
using (var rdr = cmd.ExecuteReader())
{
var dt = new DataTable();
dt.Load(rdr);
return dt;
}
}
}
}