Skip to content

Instantly share code, notes, and snippets.

@GustavoAdolfo
Last active July 17, 2020 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save GustavoAdolfo/aa39cc11bc8968039831caefc5cf7135 to your computer and use it in GitHub Desktop.
Save GustavoAdolfo/aa39cc11bc8968039831caefc5cf7135 to your computer and use it in GitHub Desktop.
use <DATABASE>;
DECLARE @schema varchar(20) = '<SCHEMA>';
DECLARE @table_name varchar(50) = '<TABLE_NAME>';
DECLARE @data_type varchar(20);
DECLARE @is_nullable varchar(20);
DECLARE @column_name varchar(max);
DECLARE @class_text varchar(max);
DECLARE @num_rows int;
DECLARE @line_number int = 1;
SELECT @num_rows = COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @table_name and TABLE_SCHEMA = @schema;
DROP TABLE #TABLE_PROPS;
SELECT
ROW_NUMBER() OVER (ORDER BY DATA_TYPE) LINE_NUMBER,
DATA_TYPE,
IS_NULLABLE,
COLUMN_NAME,
CHARACTER_MAXIMUM_LENGTH
INTO #TABLE_PROPS
FROM
INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = @table_name and TABLE_SCHEMA = @schema;
print 'public class ' + @table_name + CHAR(13)+CHAR(10)+'{';
WHILE (@line_number <= @num_rows)
BEGIN
SELECT @class_text = CONCAT(CHAR(9), 'public ', CASE DATA_TYPE
WHEN 'char' THEN
IIF (CHARACTER_MAXIMUM_LENGTH = 0, 'char', 'string')
WHEN 'bigint' THEN 'long'
WHEN 'int' THEN 'int'
WHEN 'tinyint' THEN 'short'
WHEN 'smallint' THEN 'short'
WHEN 'numeric' THEN 'desimal'
WHEN 'decimal' THEN 'decimal'
WHEN 'smallmoney' THEN 'decimal'
WHEN 'varchar' THEN 'string'
WHEN 'bit' THEN 'bool'
WHEN 'varbinary' THEN 'bity[]'
WHEN 'datetime' THEN 'DateTime'
WHEN 'datetime2' THEN 'DateTime'
WHEN 'text' THEN 'string'
ELSE 'object'
END,
CASE IS_NULLABLE
WHEN 'NO' THEN ''
ELSE IIF (DATA_TYPE = 'varchar' OR (DATA_TYPE = 'char' AND CHARACTER_MAXIMUM_LENGTH > 1), '', '?')
END, ' ' + COLUMN_NAME + ' { get; set; }')
FROM #TABLE_PROPS
WHERE LINE_NUMBER = @line_number;
print @class_text;
set @line_number += 1;
END
print '}'+char(13)+char(10);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment