Last active
July 17, 2020 12:49
-
-
Save GustavoAdolfo/aa39cc11bc8968039831caefc5cf7135 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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