利用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生成模型实体类(转)的主要内容,如果未能解决你的问题,请参考以下文章