相信大家在开发中,都遇到一个问题 ,如 json 和emtity 的转换
sql和emtity 的转换
在线工具里面很多json xml emtity 的互转工具 ,层出不穷
唯独 sql和实体的转换很少很少
好了 ,话归真题...
1 ALTER PROC P_SqlToEmtity 2 @TableName SYSNAME ---表名 3 AS 4 DECLARE @Result NVARCHAR(MAX) = N'public class ' + @TableName + N' 5 {'; 6 7 SELECT @Result = @Result + N' 8 public ' + ColumnType + NullableSign + N' ' + ColumnName + N' { get; set; } 9 ' 10 FROM 11 ( 12 SELECT REPLACE(col.NAME, ' ', '_') ColumnName, 13 column_id ColumnId, 14 CASE typ.name 15 WHEN 'bigint' THEN 'long' 16 WHEN 'binary' THEN 'byte[]' 17 WHEN 'bit' THEN 'bool' 18 WHEN 'char' THEN 'string' 19 WHEN 'date' THEN 'DateTime' 20 WHEN 'datetime' THEN 'DateTime' 21 WHEN 'datetime2' THEN 'DateTime' 22 WHEN 'datetimeoffset' THEN 'DateTimeOffset' 23 WHEN 'decimal' THEN 'decimal' 24 WHEN 'float' THEN 'float' 25 WHEN 'image' THEN 'byte[]' 26 WHEN 'int' THEN 'int' 27 WHEN 'money' THEN 'decimal' 28 WHEN 'nchar' THEN 'string' 29 WHEN 'ntext' THEN 'string' 30 WHEN 'numeric' THEN 'decimal' 31 WHEN 'nvarchar' THEN 'string' 32 WHEN 'real' THEN 'double' 33 WHEN 'smalldatetime' THEN 'DateTime' 34 WHEN 'smallint' THEN 'short' 35 WHEN 'smallmoney' THEN 'decimal' 36 WHEN 'text' THEN 'string' 37 WHEN 'time' THEN 'TimeSpan' 38 WHEN 'timestamp' THEN 'DateTime' 39 WHEN 'tinyint' THEN 'byte' 40 WHEN 'uniqueidentifier' THEN 'Guid' 41 WHEN 'varbinary' THEN 'byte[]' 42 WHEN 'NVARCHAR' THEN 'string' 43 ELSE 'UNKNOWN_' + typ.NAME 44 END ColumnType, 45 CASE 46 WHEN col.is_nullable = 1 47 AND typ.name IN ( 'bigint', 'bit', 'date', 'datetime', 'datetime2', 'datetimeoffset', 'decimal', 48 'float', 'int', 'money', 'numeric', 'real', 'smalldatetime', 'smallint', 49 'smallmoney', 'time', 'tinyint', 'uniqueidentifier' 50 ) THEN 51 '?' 52 ELSE 53 '' 54 END NullableSign 55 FROM sys.columns col 56 JOIN sys.types typ 57 ON col.system_type_id = typ.system_type_id 58 AND col.user_type_id = typ.user_type_id 59 WHERE object_id = OBJECT_ID(@TableName) 60 ) t 61 ORDER BY ColumnId; 62 63 SET @Result = @Result + N' 64 }' 65 66 PRINT @Result
Code
来源:https://www.cnblogs.com/qian-520/p/11118759.html