Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DECLARE @newline NVARCHAR(2) = CHAR(13) + CHAR(10),
- @tab NVARCHAR(1) = CHAR(9),
- @table_id INT,
- @table_name NVARCHAR(50),
- @namespace NVARCHAR(50) = 'insert.namespace.here'
- DECLARE table_cursor CURSOR FOR
- SELECT
- t.object_id,
- t.name
- FROM
- sys.tables t
- ORDER BY
- t.name
- OPEN table_cursor
- FETCH NEXT FROM table_cursor INTO @table_id, @table_name
- WHILE @@FETCH_STATUS = 0
- BEGIN
- SET @sql = 'namespace ' + @namespace + @newline
- SET @sql = @sql + '{' + @newline
- SET @sql = @sql + @tab + 'using System;' + @newline
- SET @sql = @sql + @tab + 'using System.ComponentModel.DataAnnotations;' + @newline
- SET @sql = @sql + @tab + 'using System.Linq;' + @newline
- SET @sql = @sql + @tab + 'using System.Web;' + @newline + @newline + @newline
- SET @sql = @sql + @tab + '[MetadataType(typeof(' + @table_name + 'Metadata))]' + @newline
- SET @sql = @sql + @tab + 'public partial class ' + @table_name + @newline
- SET @sql = @sql + @tab + '{' + @newline
- /**************************************************************************
- * Enumerate fields in class
- **************************************************************************/
- DECLARE @column_id INT,
- @column_name NVARCHAR(50),
- @type_name NVARCHAR(50),
- @is_identity BIT,
- @is_nullable BIT,
- @is_rowguidcol BIT,
- @max_length INT,
- @definition NVARCHAR(MAX)
- DECLARE column_cursor CURSOR FOR
- SELECT
- c.object_id,
- c.name AS column_name,
- CASE t.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 'double'
- 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 'float'
- WHEN 'smalldatetime' THEN 'DateTime'
- WHEN 'smallint' THEN 'short'
- WHEN 'smallmoney' THEN 'decimal'
- WHEN 'text' THEN 'string'
- WHEN 'time' THEN 'TimeSpan'
- WHEN 'timestamp' THEN 'long'
- WHEN 'tinyint' THEN 'byte'
- WHEN 'uniqueidentifier' THEN 'Guid'
- WHEN 'varbinary' THEN 'byte[]'
- WHEN 'varchar' THEN 'string'
- ELSE 'UNKNOWN_' + t.name
- END,
- c.is_identity,
- c.is_nullable,
- c.is_rowguidcol,
- c.max_length,
- object_definition(c.default_object_id)
- FROM
- sys.columns c
- INNER JOIN
- sys.types t ON c.system_type_id = t.system_type_id
- WHERE
- t.name <> 'sysname'
- AND c.object_id = @table_id
- ORDER BY
- c.is_identity DESC,
- c.name
- OPEN column_cursor
- FETCH NEXT FROM column_cursor INTO
- @column_id,
- @column_name,
- @type_name,
- @is_identity,
- @is_nullable,
- @is_rowguidcol,
- @max_length,
- @definition
- WHILE @@FETCH_STATUS = 0
- BEGIN
- SET @sql = @sql + @tab + @tab + 'public ' + @type_name + ' ' + @column_name + ' { get; set; }' + @newline
- FETCH NEXT FROM column_cursor INTO
- @column_id,
- @column_name,
- @type_name,
- @is_identity,
- @is_nullable,
- @is_rowguidcol,
- @max_length,
- @definition
- END
- SET @sql = @sql + @newline
- CLOSE column_cursor
- DEALLOCATE column_cursor
- SET @sql = @sql + @tab + @tab + 'public static bool Create()' + @newline
- SET @sql = @sql + @tab + @tab + '{' + @newline
- SET @sql = @sql + @tab + @tab + @tab + 'throw new NotImplementedException();' + @newline
- SET @sql = @sql + @tab + @tab + '}' + @newline + @newline
- SET @sql = @sql + @tab + @tab + 'public static bool Read()' + @newline
- SET @sql = @sql + @tab + @tab + '{' + @newline
- SET @sql = @sql + @tab + @tab + @tab + 'throw new NotImplementedException();' + @newline
- SET @sql = @sql + @tab + @tab + '}' + @newline + @newline
- SET @sql = @sql + @tab + @tab + 'public static bool Update()' + @newline
- SET @sql = @sql + @tab + @tab + '{' + @newline
- SET @sql = @sql + @tab + @tab + @tab + 'throw new NotImplementedException();' + @newline
- SET @sql = @sql + @tab + @tab + '}' + @newline + @newline
- SET @sql = @sql + @tab + @tab + 'public static bool Delete()' + @newline
- SET @sql = @sql + @tab + @tab + '{' + @newline
- SET @sql = @sql + @tab + @tab + @tab + 'throw new NotImplementedException();' + @newline
- SET @sql = @sql + @tab + @tab + '}' + @newline + @newline
- SET @sql = @sql + @tab + @tab + 'private sealed class ' + @table_name + 'Metadata' + @newline
- SET @sql = @sql + @tab + @tab + '{' + @newline
- DECLARE column_cursor CURSOR FOR
- SELECT
- c.name
- FROM
- sys.columns c
- WHERE
- c.object_id = @table_id
- AND c.is_nullable = 0
- ORDER BY
- c.name
- OPEN column_cursor
- FETCH NEXT FROM column_cursor INTO @column_name
- WHILE @@FETCH_STATUS = 0
- BEGIN
- SET @sql = @sql + @tab + @tab + @tab + '[Display(Name = "' + @column_name + '", Prompt = "' + @column_name + '")]' + @newline
- SET @sql = @sql + @tab + @tab + @tab + '[Required(AllowEmptyStrings = false, ErrorMessage = "' + @column_name + ' is required")]' + @newline
- SET @sql = @sql + @tab + @tab + @tab + 'public ' + @type_name + ' ' + @column_name + ' { get; set; }' + @newline + @newline
- FETCH NEXT FROM column_cursor INTO @column_name
- END
- CLOSE column_cursor
- DEALLOCATE column_cursor
- SET @sql = @sql + @tab + @tab + '}' + @newline
- SET @sql = @sql + @tab + '}' + @newline
- SET @sql = @sql + '}' + @newline + @newline
- PRINT(@sql)
- FETCH NEXT FROM table_cursor INTO @table_id, @table_name
- END
- CLOSE table_cursor
- DEALLOCATE table_cursor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement