目前,在企业开发中开发团队一般会选择一种ORM框架来持久化数据以提高开发效率及系统的可维护性。本人结合实际开发工作中使用的SQL Server 2005 及iBatis.NET开发了DA Generator工具。下面先介绍一下访问数据库元数据使用到的SQL Server 2005中的存储过程:
存储过程sp_helpdb
--用于得到连接到的数据库实例中的所有(或特定的一个)数据库的信息,如name,db_size,owner等
--你可以在SQL Server 2005中执行一下” EXEC sp_helpdb”及” EXEC sp_helpdb @dbname='master'”,并自己分析一下执行结果。
存储过程sp_tables
--用于得到指定(或当前)数据库上下文中的所有(或指定表名的)数据库对象(包括表,视图以及系统表)的信息
--参数有:
--@table_name(类型:nvarchar(384),默认值:NULL)
指定表的名字
--@table_owner(类型:nvarchar(384),默认值:NULL)
指定表的所有者
--@table_qualifier(类型:sysname,默认值:NULL)
指定数据库的名字
--@table_type(类型:sysname,默认值:NULL)
指定数据库对象的名字
如果想要查询master数据库中用户dbo的所有表,则相应的T-SQL如下
EXEC sp_tables @table_qualifier=N'master',
@table_owner=N'dbo',
@table_type='''TABLE'''
存储过程sp_columns
--用于得到指定(或当前)数据库上下文中的指定用户的指定表的所有列(或指定列)的信息
--参数有:
--@table_qualifier, @table_owner, @table_name,类型及默认值同存储过程sp_tables中的参数
--@column_name(类型:nvarchar(384),默认值:NULL)
指定列的名字,若未指定,则返回所有列的信息
如果想要查询master数据库中用户dbo的表spt_fallback_db的所有列的信息,则相应的T-SQL如下:
EXEC sp_columns @table_qualifier=N'master',
@table_owner=N'dbo',
@table_name=N'spt_fallback_db'
DA Generator还使用了CodeDom自动生成代码。
如果你对CodeDom有兴趣,可以学习Microsoft的MSDN文档:
http://msdn.microsoft.com/en-us/library/f1dfsbhc.aspx
最后,可以根据从数据库中得到数据库表的列名,列的类型的列表接合使用CodeDom技术来生成对应的实体类,iBatis用到的insert语句,resultMap映射等。工具DA Generator即实现了这些功能。附件是可执行程序(由于想连接数据库,因此你要修改配置文件中的连接字符串)。
https://files.cnblogs.com/fuhongwei041/DAGenerator.rar
It's the end.Thank u for your reading.