Get C# class Declaration from SQL Table structure
------------ CODE ---------- to be executed in SQL ---------
declare @TableName sysname = 'Transaction_document'
declare @Result varchar(max) = 'public class ' +
@TableName + '
{'
select @Result = @Result + '
public ' +
ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
'
from
(
select
replace(col.name, ' ', '_') ColumnName,
column_id
ColumnId,
case typ.name
when 'bigint' then 'long'
when 'binary' then 'byte[]'
when 'bit' then 'bool'
when 'char' then 'string'
when 'date' then 'DateTime'
when 'datetime' then 'DateTime'
when 'datetime2'
then 'DateTime'
when 'datetimeoffset'
then 'DateTimeOffset'
when 'decimal' then 'decimal'
when 'float' then 'float'
when 'image' then 'byte[]'
when 'int' then 'int'
when 'money' then 'decimal'
when 'nchar' then 'string'
when 'ntext' then 'string'
when 'numeric' then 'decimal'
when 'nvarchar' then 'string'
when 'real' then 'double'
when 'smalldatetime'
then 'DateTime'
when 'smallint' then 'short'
when 'smallmoney'
then 'decimal'
when 'text' then 'string'
when 'time' then 'TimeSpan'
when 'timestamp'
then 'DateTime'
when 'tinyint' then 'byte'
when 'uniqueidentifier'
then 'Guid'
when 'varbinary'
then 'byte[]'
when 'varchar' then 'string'
else 'UNKNOWN_' + typ.name
end ColumnType,
case
when col.is_nullable = 1 and typ.name in ('bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 'smallmoney', 'time', 'tinyint', 'uniqueidentifier')
then '?'
else ''
end NullableSign
from sys.columns col
join sys.types typ on
col.system_type_id =
typ.system_type_id AND
col.user_type_id =
typ.user_type_id
where object_id = object_id(@TableName)
) t
order by ColumnId
set @Result = @Result + '
}'
print @Result
public class proration_log
{
public Guid Proration_Log_Key { get; set; }
public string Text { get; set; }
public DateTime? Create_Date { get; set; }
}
Comments
Post a Comment