相信大家在开发中,都遇到一个问题 ,如 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