SQL 和 c# Emtity的相互转换

三世轮回 提交于 2020-02-25 14:37:47

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!