星空网 > 软件开发 > ASP.net

T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

相信很多人都用T4模版生成代码,用T4模版生成标准代码真的很方便。我们经常根据表生成相关的代码, 但是估计很多人都遇见过同一个问题, 特别是我们在生成model的时候,代码中model中的Summary一直无法生成。这个问题也困扰了我很久,也找了很多方案,一直没有更好的方法。问题如下:

T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

解决方案

为了生成summary需要额外的增加一个类,并在T4模版中引用这个类即可。这个类的作用是根据表名和列名提取数据表中列的description。

1. 首先查询数据库中所有表和列的基本信息

为了方便起见,我在数据库中创建了一个视图,视图结构如下:

T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

 

sql 脚本如下:

SELECT   TOP (100) PERCENT COALESCE (T.name, OBJECT_NAME(C.object_id)) AS TableName, TB.TableDESC,
                C.name AS ColumnName, TYPE_NAME(C.user_type_id) AS DataType, D.definition AS DefaultSetting,
                C.is_nullable AS IsNullable, C.max_length AS MaxLength, COLUMNPROPERTY(C.object_id, C.name, 'PRECISION')
                AS Precision, P.value AS ColumnDESC
FROM      sys.columns AS C LEFT OUTER JOIN
                sys.table_types AS T ON T.type_table_object_id = C.object_id LEFT OUTER JOIN
                sys.default_constraints AS D ON C.object_id = D.parent_object_id AND
                D.parent_column_id = C.column_id LEFT OUTER JOIN
                sys.extended_properties AS P ON (P.major_id = C.object_id OR
                P.major_id = T.user_type_id) AND P.minor_id = C.column_id AND P.name = 'MS_Description' LEFT OUTER JOIN
                    (SELECT   INFORMATION_SCHEMA.TABLES.TABLE_NAME AS TableName, P.value AS TableDESC
                     FROM      INFORMATION_SCHEMA.TABLES LEFT OUTER JOIN
                                     sys.extended_properties AS P ON
                                     OBJECT_ID(INFORMATION_SCHEMA.TABLES.TABLE_SCHEMA + '.' + INFORMATION_SCHEMA.TABLES.TABLE_NAME)
                                      = P.major_id AND P.minor_id = 0
                     WHERE   (INFORMATION_SCHEMA.TABLES.TABLE_TYPE = 'BASE TABLE')) AS TB ON COALESCE (T.name,
                OBJECT_NAME(C.object_id)) = TB.TableName
WHERE   (COALESCE (SCHEMA_NAME(T.schema_id), OBJECT_SCHEMA_NAME(C.object_id)) = 'dbo')
ORDER BY TableName

 

2.在代码中计算description

T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

 

3.T4模版调用

前面已经创建了一个类,这个类很简单,就是根据表名和列名获取对应的description。现在只要在T4模版中引用这个类即可。代码中要注意两点。直接上代码:

1. 必须要在T4模板的头部引用上面类的dll,否则无法引用命名空间。我用的是相对路径。其中$(SolutionDir)表示的solution所在的文件夹。

2.引用命名空间,下图中红线部分2行

T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

在T4模板中直接调用方法即可,这样就可以根据表个列表获取到相应的description作为类的summary了。

 

T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

这里提到一点,T4模版的代码中这个我用了一个replace,是因为我在写列描述的时候有换行,所以我把数据库中的换行转换成了summary中的换行,效果如下:

T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

 

生成的代码的demo

跟大家提供几个生成代码的截图吧,怎么样所有的summary都已经根据数据库生成出来了吧

T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

 

总结

个人认为这个方法是最简单的方法也是最有效的了,应该没有比这个在简单了。欢迎大家拍砖




原标题:T4模板根据数据库表和列的Description生成代码的summary的终极解决方案

关键词:数据库

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

产品成本利润怎么算?这款工具很实用!:https://www.ikjzd.com/articles/91558
下半年旺季就要来了!亚马逊卖家这么选品备货准没错:https://www.ikjzd.com/articles/91559
Google Adsense是什么?谷歌广告联盟注册教程:https://www.ikjzd.com/articles/91560
亚马逊账号一言不合就被封?这些雷区不能踩!:https://www.ikjzd.com/articles/91561
亚马逊刷单怎么做?解密Amazon刷单那些事!:https://www.ikjzd.com/articles/91562
8亿美刀的市场!亚马逊卖家大有可为!:https://www.ikjzd.com/articles/91563
TikTok 将推出先买后付服务 :https://www.kjdsnews.com/a/1836651.html
TikTok 将推出先买后付服务 :https://www.goluckyvip.com/news/188219.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流