前言
最近才发现这个偷懒的思路,以前一直没想到可以这样用sql语法,浪费好多时间做重复性无意义的工作。。。话不多说了直接上代码,解决繁琐手敲实体类DTO代码问题,尤其是一些表字段很多的库表。参考以下sql其实也可以快速生成其他需要的东西(举一反三)。
——身为程序员必须得会偷懒!
SELECT
CONCAT(' /// <summary>
/// ',column_comment,'
/// </summary>
'),
CASE
WHEN COLUMN_NAME='RecordId' THEN CONCAT('public string ',COLUMN_NAME,'{ get; set; } = Guid.NewGuid().ToString("N");')
WHEN DATA_TYPE LIKE '%char%' OR DATA_TYPE LIKE '%text%' THEN CONCAT('public string ',COLUMN_NAME,'{ get; set; }')
WHEN DATA_TYPE LIKE '%int%' THEN CONCAT('public int ',COLUMN_NAME,'{ get; set; }')
WHEN DATA_TYPE LIKE '%bit%' THEN CONCAT('public bool ',COLUMN_NAME,'{ get; set; }')
WHEN DATA_TYPE LIKE '%float%' THEN CONCAT('public decimal ',COLUMN_NAME,'{ get; set; }')
WHEN DATA_TYPE LIKE '%decimal%' THEN CONCAT('public decimal ',COLUMN_NAME,'{ get; set; }')
WHEN DATA_TYPE LIKE '%date%' THEN CONCAT('public DateTime? ',COLUMN_NAME,'{ get; set; }')
WHEN DATA_TYPE LIKE '%timestamp%' THEN CONCAT('public DateTime? ',COLUMN_NAME,'{ get; set; }')
ELSE COLUMN_NAME
END
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE table_schema = 'DBName' -- 数据库名称
AND table_name = 'tableName' -- 表名
ORDER BY ordinal_position;
注:修改为需要生成类的数据库名及表名后,代码直接放sql查询器运行,复制结果到cs类即可。