利用SQL生成模型实体类(转)

Posted T丶MELO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用SQL生成模型实体类(转)相关的知识,希望对你有一定的参考价值。

DECLARE @TableName sysname = \'TableName\';
DECLARE @Result VARCHAR(MAX) = \'public class \' + @TableName + \'
{\';
SELECT @Result = @Result + \'
    /// <summary>
    /// \'        + CAST(t.Summary AS VARCHAR(MAX)) + \'
    /// </summary>
    public \'     + ColumnType + NullableSign + \' \' + ColumnName + \' { get; set; }
\'
FROM
(
    SELECT REPLACE(col.name, \' \', \'_\') ColumnName,
           col.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,
           ISNULL(ep.value, col.name) AS Summary
    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 ep
            ON ep.major_id = col.object_id
               AND ep.minor_id = col.column_id
    WHERE col.object_id = OBJECT_ID(@TableName)
) t
ORDER BY ColumnId;
SET @Result = @Result + \'
}\';
PRINT @Result;

 

转自大佬:https://www.cnblogs.com/meowv/p/11379829.html

以上是关于利用SQL生成模型实体类(转)的主要内容,如果未能解决你的问题,请参考以下文章

Java代码实体类生成SQL语句(Java实体类转数据库)

Apifox 实体类转请求参数数据模型

Apifox 实体类转请求参数数据模型

使用实体框架迁移时 SQL Server 连接抛出异常 - 添加代码片段

Apifox 实体类转请求参数数据模型

如何利用SQL中数据使用FreeMarker生成JAVA实体bean代码