用户登录
用户注册

分享至

利用SQL生成模型实体类

  • 作者: 切克闹21628686
  • 来源: 51数据库
  • 2021-08-17
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
软件
前端设计
程序设计
Java相关