Last active
April 29, 2016 11:40
-
-
Save AndrewAllison/f30019cfe3de6ab3bbb8 to your computer and use it in GitHub Desktop.
Create a C# class from DB Table. String output, ready to copy and past..
This file contains hidden or 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
| declare @TableName sysname = 'DBTableName' | |
| declare @result varchar(max) = 'public class ' + @TableName + ' | |
| {' | |
| select @result = @result | |
| + CASE WHEN ColumnDesc IS NOT NULL THEN ' | |
| /// <summary> | |
| /// ' + ColumnDesc + ' | |
| /// </summary>' ELSE '' END | |
| + ' | |
| public ' + ColumnType + ' ' + ColumnName + ' { get; set; }' | |
| from | |
| ( | |
| select | |
| replace(col.name, ' ', '_') ColumnName, | |
| column_id, | |
| 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 'char' | |
| 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 + CASE WHEN col.is_nullable=1 AND typ.name NOT IN ('binary', 'varbinary', 'image', 'text', 'ntext', 'varchar', 'nvarchar', 'char', 'nchar') THEN '?' ELSE '' END ColumnType, | |
| colDesc.colDesc AS ColumnDesc | |
| 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 | |
| OUTER APPLY ( | |
| SELECT TOP 1 CAST(value AS NVARCHAR(max)) AS colDesc | |
| FROM | |
| sys.extended_properties | |
| WHERE | |
| major_id = col.object_id | |
| AND | |
| minor_id = COLUMNPROPERTY(major_id, col.name, 'ColumnId') | |
| ) colDesc | |
| where object_id = object_id(@TableName) | |
| ) t | |
| order by column_id | |
| set @result = @result + ' | |
| }' | |
| print @result |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
More info http://stackoverflow.com/questions/5873170/generate-class-from-database-table