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语句

    进行修改

  • 相关阅读:
    ckeditor+粘贴word
    java+批量下载大文件
    链接批量下载文件
    java+大文件上传解决方案
    php+提高大文件上传速度
    富文本粘贴word文档内容图片处理
    软件开发工具(三)——理论与开发过程
    c结构体里的数组与指针
    Java解析Property文件
    怎样高速编译mediatekoperator以下代码
  • 原文地址:https://www.cnblogs.com/wang0020/p/13292229.html
Copyright © 2011-2022 走看看