XCodeFactory

C#编程爱好者
随笔 - 18, 文章 - 0, 评论 - 60, 阅读 - 24134
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年5月 >
27 28 29 30 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
1 2 3 4 5 6 7

XCodeFactory3.0完全攻略--基本思想

Posted on   C#编程爱好者  阅读(1897)  评论(0)    收藏  举报
     XCodeFactory的主要目标是使开发人员从SQL语句、从数据层解脱出来,也就是说,使用XCodeFactory之后,开发人员可以不用关心数据层的任何东西,而所要做的仅仅是维护xcf文件--XCodeFactory的项目文件,一个xcf文件对应你的一个VS.NET项目中数据层。    
   
只要有xcf文件在手,我就可以使用XCodeFactory自动生成数据库中的表、所有的数据对象类和数据访问类。所以当需要修改某个数据库中的某个表的结构时,只需要XCodeFactory打开xcf文件,修改对应的内容,点击生成按钮,然后重新编译你的VS项目。

   
你也许已经了解一些了,是的,思想是这样的,一个VS.NET项目对应着一个xcf文件,即
    VS.NET项目的数据层 《==》Xcf文件《==》(多个)物理数据库

    所谓数据对象类,可以说是一个简单的数据结构,它的所有属性都与对应的数据库表中的字段一一对应,注意,是“一一对应”,而数据库类型也转换为对应的C#类型,如NVarChar转换为stringimage转换为byte数组等等。

    而一个对象(即一个数据对象类的实例)对应着数据库表中的一条记录。
 

    如今已经有很多的数据层自动生成工具了,这些工具的作者对数据层的设计都有自己的一套方案,XCodeFactory也不例外。比如有的把数据库的访问操作作为数据对象(对应数据库中的一个表)的公有方法实现,有的则将数据对象和访问者独立开来。XCodeFactory采用的是后面一种思想。

    依照上文的例子,Student类对应的SqlServer的数据访问类StudentSqlDealer用于在OR之间转换,如StudentSqlDealer.GetObjects方法将数据库中符合条件的记录转换为Student数组返回,而StudentSqlDealer.Insert(student1),用于向数据库中插入一条记录。之所以没有将数据访问操作作为数据对象的公有方法提供,是因为:
1)不够直观,含义模糊。
    比如Student.Save表示将自己插入数据库,Student.Update表示更新数据库中对应的记录。那么使用者怎么知道到底要调用哪个了?难道每次调用前都要先调用Student.IsExist判断一下对应的记录是否存在?

2)有些操作很难表达。
    比如批插入,使用Student.InsertBatch吗?很明显InsertBatch根本就不是Student的职能。而使用StudentSqlDealer.InsertBatch就很清楚的表达了意思。 

    基于上述两个原因,所以将数据对象类和访问者独立开来,这样做还可以带来的额外的好处:
1)切换数据库类型更加容易。使用反射类工厂可以通过修改配置文件达到切换数据库类型的目的。
2)当数据库访问接口改变时,数据对象类不用修改。
    这些将会在后面的示例中体现出来。    XCodeFactory3.0完全攻略 目录

编辑推荐:
· .NET 的全新低延时高吞吐自适应 GC - Satori GC
· 使用 C++ 20 协程降低异步网络编程复杂度
· 使用 libdivide 加速整数除法运算
· 为什么互联网这么卷?
· .NET 10 Preview 4中 ASP.NET Core 改进
阅读排行:
· 重磅消息,微软宣布 VS Code Copilot 开源,剑指 Cursor!
· .NET 的全新低延时高吞吐自适应 GC - Satori GC
· 高效缓存的10条军规
· 【译】Visual Studio 2022 v17.14 现已正式发布!
· 会用 AI 的工程师,效率已经拉开差距了 - “ 我们曾经引以为傲的编码能力,正在被改写。”
点击右上角即可分享
微信分享提示