柚子快报邀请码778899分享:利用SQL生成模型实体类

http://www.51969.com/

DECLARE @TableName sysname = 'TableName';

DECLARE @Result VARCHAR(MAX) = 'public class ' + @TableName + '

{';

SELECT @Result = @Result + '

///

/// ' + CAST(t.Summary AS VARCHAR(MAX)) + '

///

public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }

'

FROM

(

SELECT REPLACE(col.name, ' ', '_') ColumnName,

col.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

'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 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,

ISNULL(ep.value, col.name) AS Summary

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

LEFT JOIN sys.extended_properties ep

ON ep.major_id = col.object_id

AND ep.minor_id = col.column_id

WHERE col.object_id = OBJECT_ID(@TableName)

) t

ORDER BY ColumnId;

SET @Result = @Result + '

}';

PRINT @Result;

柚子快报邀请码778899分享:利用SQL生成模型实体类

http://www.51969.com/

查看原文