如何从数据库中获取正确的 DataColumn 属性

How to Get correct DataColumn Properties from DB

我正在使用 ADO.NET。当我想将数据保存到 SQL 中的 table 时,我需要检索此 table 中的列信息。通过信息,我的意思是列最大大小(我想从 nvarchar(10) 列中获取 10)和 NULLNOT NULL。 我正在使用下一个代码:

var selectFromCmd = SqlCommandFactory.CreateCommand("select top 0 * from [dbo]." + destTableName, SqlConnection, SqlTransaction);
var dataAdapter = new SqlDataAdapter(selectFromCmd);
var destinationTable = new DataTable();
dataAdapter.Fill(destinationTable);

然后我得到 DataColumn 像这样:

var column = destinationTable.Columns["MyColumn"]

但是 AllowDBNull 总是 true

MaxLength 始终是 -1,即使此列是 string

那么,我怎样才能在 ADO.NET 中获得有关列属性的正确信息?

对于此查询,我宁愿使用系统目录视图。像这样....

SELECT  c.name ColumnName
       ,t.Name Datatype
       ,c.max_length MaxLength
       ,c.is_nullable 
FROM sys.columns c
INNER JOIN sys.types t ON c.user_type_id = t.user_type_id
WHERE c.object_id = object_id('Customers') --<-- your table name