C#代码生成器
快乐编程,开心工作!大家好我是一个C#程序员Mark。有的人说编程的过程是痛苦的,有的人说编程很痛苦的。为了生活~你们说的都对!我呢?是为了兴趣所以乐在其中:) 。
最近呢很多刚开始学习C#编程的小伙伴找我给我提出了这么一个问题,他说现在学了封装、继承、多态之后学校老师让他们自己组队做个小项目,但是呢数据库中的表有十几张表,如果按照面向对象+三层架构的思想每张表都要去写一个实体类,而这个实体类呢和数据库的字段和类型又有着一定的关联(规律)。对于他这种比较懒的人来说,他总感觉吧是不是应该有什么方法可以简化大家的开发工作。所以呢他决定去网上找找,结果找到了一个叫XX代码生成器的中文版工具,发现还真的能生成平时写的代码:),好吧接下来就由来这样的一个诉求。
针对这个问题,Mark今天就来教大家做一个实用的小工具,原理就是根据数据库提供的信息去按一定的规律生成我们需要的代码。
小工具的名字就叫:C#代码生成器
首先大家要知道,数据库里面的所有用户创建的数据库或表都是有系统表去记录结构信息的。
1、了解数据结构
在sqlserver数据库中查询系统表SysDatabases
select * from SysDatabases
显示结果:
字段dbid 值在1-6的是系统数据库,其它为用户自定义的业务库。
2、在系统库的SysObjects表中存放了我的用户表结构信息,使用XType=’U’可以查询出用户添加的结构信息。
SELECT * FROM Schooldb..SysObjects Where XType=’U’ ORDER BY Name
在通过系统表动态获取用户库和表信息之后我们如何来针对表名来获取对应列的信息呢?
如图:
SQL脚本:select * from
information_schema.columns where table_name=‘Students’
schema是架构:可以存放表、视图、存储过程等,主要是用于权限控制安全控制的,我们可以通过架构
information_schema.columns获取列信息,系统视图等数据。
数据库结构总结完成之后呢,我们来上C#实现的关键代码:
将数据库类型转换为C#类型。
将生成的代码拼接成字符串,然后写入到本地物理磁盘。
生成后的效果图:
生成后的实体文件
实体类内容
好啦,至此功能已经完成,当然这段代码只是生成了实体类,实际上普通的业务逻辑层和数据访问层当然也能生成,那么剩下的就留给大家去开开脑洞啦!!!
如果有小伙伴在编写代码过程当中碰到问题欢迎大家添加关注私信我来咨询,或找我获取录制的视频和代码。