Useful SQL
DECLARE @TableName SYSNAME = 'TableName'
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
SELECT t.name AS Table_Name,
c.name AS Column_Name,
p.name AS Data_Type,
p.max_length AS SIZE,
Cast(p.PRECISION AS VARCHAR) + '/'
+ Cast(p.scale AS VARCHAR) AS Precision_Scale
FROM sys.OBJECTS AS t
join sys.COLUMNS AS c
ON t.object_id = c.object_id
join sys.TYPES AS p
ON c.system_type_id = p.system_type_id
WHERE t.type_desc = 'USER_TABLE';
--==============================
SELECT table_schema,
table_name,
column_name,
ordinal_position,
column_default,
data_type,
character_maximum_length,
numeric_precision,
numeric_precision_radix,
numeric_scale,
datetime_precision
FROM information_schema.COLUMNS;