XCodeFactory2.0的功能增强主要表现在以下几个方面:
(1)对SqlServer数据库和Access数据库的完整支持。
(2)对Blob的完整支持。
(3)添加对自动编号主键字段的支持。
2.0以前的版本生成的数据层代码没有支持自动编号的主键,如果一个主键是自动编号的,我们需要在访问类的源文件中更改Insert语句--即删除对主键的赋值。
(4)插入一个自动编号主键的对象时,返回该对象的编号。
为数据访问的基础接口IDBAccesserOrder添加InsertReturnIdentity方法,这样就不用每次插入对象完了,需要得到其编号时,再把其从数据库中取出来。实现的方法是,在Insert语句后面加上“select @@IDENTITY as 'identity'”,然后执行IDbCommand的ExecuteScalar方法。
(5)自动为数据对象的每个字段添加了注释。
这个注释就是在操作cfp项目时填入的每个字段的中文名。通过VA等,我们在使用一个数据类的某个字段时,可以出现该字段的中文名,方便我们在项目的任何地方都可以轻易的查询到每个字段的中文意思。
(6)加入DataEntrance静态类,再度简化对数据访问类的使用。
我自己觉得,原来的数据访问类的使用已经足够简单了,但是,有一点,每次我们需要访问数据库时,都要new一个dealer出来,然后操作数据库。比如我们需要从数据库中获取ID为001的Student的导师Mentor的名字,以前,我们需要这样做:
StudentSqlDealer studentDealer = new StudentSqlDealer(connStr) ;
Student stu = (Student)studentDealer.GetAObject("Where ID = '001'") ;
MentorSqlDealer mentorDealer = new MentorSqlDealer(connStr) ;
Mentor mentor = (Mentor)mentorDealer.GetAObject(string.Format("Where ID = '{0}'" ,stu.MentorID)) ;
string theName = mentor.Name ;
使用DataEntrance可以这样做:
string mentorID = DataEntrance.GetFieldValue(typeof(Student) ,"001" ,"MentorID").ToString() ;
string theName = DataEntrance.GetFieldValue(typeof(Mentor) ,mentorID ,"Name").ToString() ;
是不是方便多了?!!
关于XCodeFactory使用的完全手册我会在近期整理出来,里面会对XCodeFactory生成的数据层代码的结构及相关的设计考虑展现给大家,如果XCodeFactory能成为大家的得力助手,我将非常高兴!