5

我正在编写 T4 模板来生成 CRUD 存储过程等

我正在使用 SMO 遍历表的列:

For Each column As Column In table.Columns
    WriteLine("@" & column.Name & " " & column.DataType.Name & ", ")
Next

我的问题只是如何找到 varchar 列的长度?列上似乎没有任何 Length / MaxLength 等属性。

我使用http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.column_members.aspx作为参考

4

3 回答 3

15

Column类型有一个名为的属性DataType,其中包含您要查找的这些信息:

int maxLen = column.DataType.MaximumLength;
int maxPrecision = column.DataType.NumericPrecision;
int numericScale = column.DataType.NumericScale;

等等。显然,并非所有字段都为每种类型填写 - VARCHAR 上的数字刻度没有意义......

查看有关精度、比例和最大长度的 MSDN 文档。主要语句是这样的:

精度是数字中的位数。比例是数字中小数点右侧的位数。例如,数字 123.45 的精度为 5,小数位数为 2。

所以 aDECIMAL(12,4)精度为 12 位(总计),其中 4 位在小数点之后(比例尺),因此 8 位在小数点之前。

但那些应该是你正在寻找的领域,对吧?

于 2010-02-16T17:34:07.547 回答
3

尝试:

column.Properties["Length"].Value
于 2010-03-12T10:47:05.103 回答
0

您可以使用以下代码获取所有字段属性:

<#= propertyType #>
<#=col.DataType.MaximumLength#>
<#=col.Nullable?"?":""#>
于 2017-12-09T19:39:58.770 回答