利用SQL生成模型实体类

declare @tablename sysname = 'tablename'
declare @result varchar(max) = 'public class ' + @tablename + '
{'

select @result = @result + '
    public ' + columntype + nullablesign + ' ' + columnname + ' { get; set; }
'
from
(
    select
        replace(col.name, ' ', '_') columnname,
        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
    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
    where object_id = object_id(@tablename)
) t
order by columnid

set @result = @result  + '
}'

print @result
(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐