zoukankan      html  css  js  c++  java
  • SqlServer数据库所有表生成C# Model实体类SQL语句

    select ROW_NUMBER() over (order by name)  as id,name into #t from sysobjects where xtype='U';
    declare @i int,@c int set @i=0
    select @c=count(1) from #t
    
    declare @Result varchar(max),@TableName varchar(50)
    set @Result=''
    print @Result
    while @i<@c
    begin
    
    set @i=@i+1
    select @TableName=name from #t where id=@i
    set @Result=@Result+ '
    /// <summary>
    ///  ' +  @TableName +    
    '    
    /// </summary>
    [Table("'+@TableName+'")]
    public class ' + @TableName + '
    {'
    
    select @Result = @Result + '
        /// <summary>
        /// ' +  CONVERT(NVARCHAR(500), ISNULL(ColName, '')) +    
    '    
        /// </summary>'+case when ColumnName='id' then '
        [Key]' else '' end+'
        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
    
    set @Result = @Result  + '
    }'
    
    end 
    drop table #t
    print @Result

    根据

    【SQL骚操作】SqlServer数据库表生成C# Model实体类SQL语句

    进行修改

  • 相关阅读:
    为linux系统添加虚拟内存swap分区
    使用exec命令删除前几天产生的日志
    编写脚本:访问一网站,每5分钟访问一次,如果访问成功,将访问记录保存到日志,如果访问失败,则发送邮件至指定邮箱
    html,css学习实践总结
    css清除浮动
    bootstrap简单使用
    jquery笔记
    HTML,CSS笔记
    node学习: package.json
    node笔记
  • 原文地址:https://www.cnblogs.com/wang0020/p/13292229.html
Copyright © 2011-2022 走看看