Получить длину столбцов с помощью объектов управления SQL Server (SMO) - PullRequest
4 голосов
/ 16 февраля 2010

Я пишу шаблоны 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 в качестве ссылки

Ответы [ 3 ]

11 голосов
/ 16 февраля 2010

Тип Column имеет свойство под названием DataType, которое содержит следующие биты информации, которые вы ищете:

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

и так далее. Очевидно, что не все поля заполнены для каждого типа - числовая шкала на VARCHAR не имеет смысла ....

Проверьте документы MSDN по точности, масштабу и максимальной длине . Основное предложение таково:

Точность - это количество цифр в число. Масштаб это количество цифр справа от десятичной точки в число. Например, число 123,45 имеет точность 5 и масштаб 2.

Таким образом, DECIMAL(12,4) имеет точность из 12 цифр (всего), из которых 4 после десятичной точки ( шкала ) и, следовательно, 8 цифр перед десятичной точка.

Но это те поля, которые вы ищете, верно?

3 голосов
/ 12 марта 2010

Попробуйте:

column.Properties["Length"].Value
0 голосов
/ 09 декабря 2017

Вы можете использовать следующий код, чтобы получить все свойства поля:

<#= propertyType #>
<#=col.DataType.MaximumLength#>
<#=col.Nullable?"?":""#>
...