本篇才真正是XCode教程第一篇。《速览》是为了以最简洁的语言最短小的篇幅去吸引开发者;《简介》则是对XCode组件和XCode开发模式的一个总体介绍,让开发者从宏观的角度去理解XCode;《共舞》把XCode提到了一个新的高度,让开发者感觉到它的贵族血统! html
先抛出三篇来吸引人,再出《动手》,其实就是吊人胃口。若是到这里你尚未想试一试XCode的念头冲动,好吧,我认可是个人失败,不过你能够欺骗我,可别欺骗你本身! 数据库
XCode开发模式建议先有数据库再有实体模型,而后借助代码生成器生成实体代码;固然你要反过来先作实体模型也是能够的,XCode之下的实体,支持反向生成数据库结构。 架构
下面以《速览》中的UserMember为例,创建数据表: ide
数据表名: 用户 (UserMember) 性能
中文名学习 |
英文名测试 |
数据类型网站 |
大小this |
是否主键编码 |
是否惟一 |
是否必填 |
默认值 |
编号 |
ID |
Int32 |
10 |
是 |
是 |
是 |
|
帐号 |
Account |
String |
50 |
|
|
|
|
显示名 |
DisplayName |
String |
50 |
|
|
|
|
数据库命名规范:
² 名称必须使用通俗易懂的英文单词全拼,经常使用的缩略词(如ID)除外
² 使用驼峰命名规则,每一个单词首字母大写,其它小写
² 名称必须简洁明了,不要加多余的前缀(如表名前加tbl),字段名也不要加表名前缀
² 不得使用SQL关键字或C#关键字做为表名或字段名
² 布尔型字段名称必须是IsAbb的形式
² 字符串类型统一使用nvarchar,大文本使用ntext,除非特殊状况,不然不用其它文本类型
² 建议给每张表创建一个自增的ID字段并做为主键,以利于数据分页管理
² 建议给每张表和每一个字段加上说明
使用代码生成器生成代码(先看代码,待会讲过程):
代码很少,分为属性、索引器和嵌套类三大块,其中后两块还不是必须的,因此即便是手工编码也不会太麻烦。
所使用的代码生成器XCoder,是一个基于XCode的模版标签替换生成器。XCode提供数据库结构信息,用户设计模版,XCoder根据模版标签进行替换。上面的代码还有数据字典表格,都是XCoder生成的,只是所使用的模版不一样而已。有兴趣的朋友彻底能够定制本身的代码生成器,DAL类的Tables属性能够取得该链接的表架构信息,如DAL.Create("Test").Tables能够取得链接名为Test的数据库的架构信息。
XCoder的使用很简单,打开配置文件XCoder.exe.config,增长一个链接字符串:
运行XCoder.exe,能够在链接下拉框选择链接字符串
点击链接,列出该库全部表和视图
设置命名空间、输出目录和链接名等信息,选择“数据”模版,点击生成
由于XCode是充血模型,使用的时候是不须要指定数据库链接的,因此实体类里面默认指定链接名。
XCode模型追求简单实用,因此没有区分数据层和业务层。可是XCode实体类有数据类和业务类的说法,刚才上面的“数据”模版生成的就是数据类,下面生成业务类
能够看出,数据类和业务类其实就是同一类,只不过使用了分部类partial,把一个类分拆到两个文件里面去。数据类记录表结构信息,基本上依靠于生成;业务类第一次生成后只有一些注释,用于引导开发者如何实现本身想要的功能。业务代码等人工编写的代码,都要求卸载业务类里面,当表结构改变须要从新生成代码时,仅生成数据类便可,人工编写的代码保留在业务类中,不至于被覆盖。
XCoder在输出目录生成了代码文件,复制到vs里面去
再看看例子代码
编译,提示user = UserMember.FindByAccount("asdf")这句报错,没有FindByAccout方法。忘了这是我手工写的了
这个方法是根据帐号查找用户。通常建议,FindByXxxx表示根据某个条件查询一个对象,FindAllByXxxx表示查询符合某个条件的全部对象的集合。
再次编译,经过。运行
又忘了,咱们尚未设置链接字符串呢。增长链接字符串
这里要求链接名必须是Test,由于生成数据类的时候,指定了链接名为Test,因此才有刚才的异常,提示设置Test链接字符串。后面就是标准的链接字符串了,固然,这个时候是能够修改成Access、Oracle、MySql等链接字符串的,尽管咱们开始的时候是在SqlServer中创建表结构。由于实体类已经创建完成,它与具体数据库无关,只有在运行时探测是哪种数据库,再根据状况生成相应的查询/操做SQL。
XCode除了能获取数据库架构信息外,还能设置数据库架构,也就是可以根据实体类自动进行建表或者修改表结构。因此,不用担忧修改链接字符串指向别的数据库后,会由于没有数据表而报错。这个小功能有个好处,好比生产环境是Oracle数据库,而开发环境比较差,跑不起Oracle,彻底能够在开发环境用Access进行设计,部署到生成环境再修改链接字符串,XCode会尽其所能的屏蔽数据库操做差别。
打开XCode的OrmDebug开关(用于输出SQL语句),再次运行
跟上面的代码进行比对,能够加深理解。OrmDebug开关对于学习XCode和解决问题很是有用。
上面是控制台的例子,下面看看Web的例子。
在生成实体类代码的时候,能够看到还有两个模版“列表页”和“表单”,取消“中文文件名”选择,分别生成这两个模版的代码。新建一个网站,把它们复制进去
设置链接字符串,预览UserMember.aspx
回到刚才的控制台代码,咱们另外写一段插入测试数据的代码
这段代码将会向数据库插入176行数据。刷新UserMember.aspx页面
列表显示、分页、排序、编辑、删除等功能都有了。
咱们对这个页面作一点修改,添加一个到UserMemberForm.aspx的连接,而且把GridView里面的帐号列改成超连接,也连接到UserMemberForm.aspx,而且带上ID做为参数。
点击“添加用户”
添加一个用户
点击帐号aaa,进入表单编辑页面,注意地址栏的ID=179
又一次,咱们没有编写代码!
其实这些都是一些很是简单的功能,列表页就是GridView+ObjectDataSource +实体类,表单页就是FormView+ObjectDataSource+实体类,没有传递ID的时候为添加状态。
Web的例子就到这里,详细的用法能够回过头看看《与ObjectDataSource共舞》,里面提到的批量生产正是本篇所使用的代码生成器生成列表页和表单页。
大石头
新生命开发团队
2010-09-07 03:57
做者: 大石头 发表于 2010-09-15 07:42 原文连接
最新新闻:
· 是否该让开发人员跟客户直接交流?(2010-12-21 07:53)
· 亚马逊副总裁跳槽Groupon任CFO(2010-12-21 07:50)
· Gmail语音服务将延长至2011年末(2010-12-21 07:49)
· AOL收购我的档案网站About.me(2010-12-21 07:48)
· AT&T 19.25亿美圆购入高通 700MHz 低频频谱(2010-12-21 07:42)
编辑推荐:Mono又更新了
网站导航:博客园首页