可能我在这里忽略了某些东西,但是当我从中加载 DataTable 时,SqlCommand.ExecuteReader()
我发现我的 String 字段的 MaxLength 属性被忽略并在生成的 DataColumn 中重置为“50”。这是一个示例表:
CREATE TABLE MySqlServerTable (
[instance_id] INT NOT NULL,
[field_id] INT NOT NULL,
[value] VARCHAR (MAX) NOT NULL);
我用来初始化本地 DataTable 的方法是
public DataTable GetDT()
{
string query = "SELECT top 0 * FROM MySqlServerTable;";
SqlCommand cmd = new SqlCommand(query, _msSqlConn);
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return dt;
}
其中 _msSqlConn 是已经打开的 SqlConnection。如果然后滚动浏览 DataColumns,我会发现 value 列(字符串列)的 MaxLength 已分配为 50。
Console.WriteLine(GetDT().Columns["value"].MaxLength);
那么给了什么?
有点与这个尝试的答案有关,但仍未解决。
这样做的正确方法是什么,以便从 SqlServer2012 数据库中正确检索我的字符串列 MaxLengths?