C#DataTable.Load不会为列加载SQL默认值

时间:2017-09-26 19:33:22

标签: c# sql-server datatable default-value

现在我们在大型系统中使用以下代码将行的列加载到数据表中,然后我们设置要插入的列的值(.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;
                }
            }
        }
    }

0 个答案:

没有答案