【小白专用】SqlServer数据库表生成C# Model实体类SQL语句







declare @TableName sysname = 'sys_user'--表名
declare @Result varchar(max) = '
/// 
///  ' +  @TableName +
    
'    
/// 
public class ' + @TableName + '
{'
 
select @Result = @Result + '
    /// 
    /// ' +  CONVERT(NVARCHAR(500), ISNULL(ColName, '无')) +
    
'    
    /// 
    public ' + ColumnType + NullableSign + ' ' + ColumnName + ' { get; set; }
'
from
(
    SELECT
        replace(col.name, ' ', '_') ColumnName,
        column_id ColumnId,
        prop.value ColName,
        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
            LEFT JOIN sys.extended_properties prop ON col.object_id = prop.major_id AND col.column_id = prop.minor_id
    where object_id = object_id(@TableName)
) t
--order by ColumnId
 
set @Result = @Result  + '
}'
 
print @Result






/// 
///  sys_user    
/// 
public class sys_user
{
    /// 
    /// 无    
    /// 
    public string user_id { get; set; }

    /// 
    /// 无    
    /// 
    public string user_name { get; set; }

    /// 
    /// 无    
    /// 
    public string pass_word { get; set; }

    /// 
    /// 无    
    /// 
    public string create_by { get; set; }

    /// 
    /// 无    
    /// 
    public DateTime? create_time { get; set; }

    /// 
    /// 无    
    /// 
    public string update_by { get; set; }

    /// 
    /// 无    
    /// 
    public DateTime? update_time { get; set; }

    /// 
    /// 无    
    /// 
    public byte? is_deleted { get; set; }

    /// 
    /// 无    
    /// 
    public byte? status { get; set; }

}

【小白专用】SqlServer数据库表生成C# Model实体类SQL语句_第1张图片

你可能感兴趣的:(数据库,sqlserver,sql,生成C#,Model实体类)