当前位置:新注册送38元体验金 > 新注册送38元体验金操作系统 > 详解ORM组件XCode教程 图文并茂(1)

详解ORM组件XCode教程 图文并茂(1)

文章作者:新注册送38元体验金操作系统 上传时间:2019-08-22

ORM组件XCode教程是本文要介绍的内容,本篇才真正是XCode教程第一篇。《速览》是为了以最简洁的语言最短小的篇幅去吸引开发者;《简介》则是对XCode组件和XCode开发模式的一个整体介绍,让开发者从宏观的角度去理解XCode;《共舞》把XCode提到了一个新的高度,让开发者感受到它的贵族血统!

先抛出三篇来吸引人,再出《动手》,其实就是吊人胃口。如果到这里你还没有想试一试XCode的念头冲动,好吧,我承认是我的失败,不过你可以欺骗我,可别欺骗你自己!

XCode开发模式建议先有数据库再有实体模型,然后借助代码生成器生成实体代码;当然你要反过来先做实体模型也是可以的,XCode之下的实体,支持反向生成数据库结构。

下面以《速览》中的UserMember为例,建立数据表:

数据表名: 用户 UserMember)

图片 1 

图片 2

数据库命名规范:

1)名称必须使用通俗易懂的英文单词全拼,常用的缩略词如ID)除外

2)使用驼峰命名规则,每个单词首字母大写,其它小写

3)名称必须简洁明了,不要加多余的前缀如表名前加tbl),字段名也不要加表名前缀

4)不得使用SQL关键字或C#关键字作为表名或字段名

5)布尔型字段名称必须是IsAbb的形式

6)字符串类型统一使用nvarchar,大文本使用ntext,除非特殊情况,否则不用其它文本类型

7)建议给每张表建立一个自增的ID字段并作为主键,以利于数据分页管理

8)建议给每张表和每个字段加上说明

9)使用代码生成器生成代码先看代码,待会讲过程):

代码

/// <summary> /// 用户  /// </summary> [Serializable]  [DataObject]  [Description("用户")]  [BindTable("UserMember", Description = "用户", ConnName = "Test")]  public partial class UserMember  {      #region 属性      private Int32 _ID;      /// <summary>     /// 编号      /// </summary>     [Description("编号")]      [DataObjectField(true, true, false, 10)]      [BindColumn("ID", Description = "编号", DefaultValue = "", Order = 1)]      public Int32 ID      {          get { return _ID; }          set { if (OnPropertyChange("ID", value)) _ID = value; }      }            private String _Account;      /// <summary>     /// 账号      /// </summary>     [Description("账号")]      [DataObjectField(false, false, true, 50)]      [BindColumn("Account", Description = "账号", DefaultValue = "", Order = 2)]      public String Account      {          get { return _Account; }          set { if (OnPropertyChange("Account", value)) _Account = value; }      }            private String _DisplayName;      /// <summary>     /// 显示名      /// </summary>     [Description("显示名")]      [DataObjectField(false, false, true, 50)]      [BindColumn("DisplayName", Description = "显示名", DefaultValue = "", Order = 3)]      public String DisplayName      {          get { return _DisplayName; }          set { if (OnPropertyChange("DisplayName", value)) _DisplayName = value; }      }      #endregion       #region 获取/设置 字段值      /// <summary>     /// 获取/设置 字段值。      /// 一个索引,基类使用反射实现。      /// 派生实体类可重写该索引,以避免反射带来的性能损耗      /// </summary>     /// <param name="name">字段名</param>     /// <returns></returns>     public override Object this[String name]      {          get          {              switch (name)              {                  case "ID": return ID;                  case "Account": return Account;                  case "DisplayName": return DisplayName;                  default: return base[name];              }          }          set          {              switch (name)              {                  case "ID": _ID = Convert.ToInt32(value); break;                  case "Account": _Account = Convert.ToString(value); break;                  case "DisplayName": _DisplayName = Convert.ToString(value); break;                  default: base[name] = value; break;              }          }      }      #endregion      #region 字段名      /// <summary>     /// 取得字段名的快捷方式      /// </summary>     public class _      {          /// <summary>         /// 编号          /// </summary>         public const String ID = "ID";          /// <summary>         /// 账号          /// </summary>         public const String Account = "Account";                    /// <summary>         /// 显示名          /// </summary>         public const String DisplayName = "DisplayName";      }      #endregion  } 

代码不多,分为属性、索引器和嵌套类三大块,其中后两块还不是必须的,所以即使是手工编码也不会太麻烦。

所使用的代码生成器XCoder,是一个基于XCode的模版标签替换生成器。XCode提供数据库结构信息,用户设计模版,XCoder根据模版标签进行替换。上面的代码还有数据字典表格,都是XCoder生成的,只是所使用的模版不同而已。有兴趣的朋友完全可以定制自己的代码生成器,DAL类的Tables属性可以取得该连接的表架构信息,如DAL.Create("Test").Tables可以取得连接名为Test的数据库的架构信息。

...

本文由新注册送38元体验金发布于新注册送38元体验金操作系统,转载请注明出处:详解ORM组件XCode教程 图文并茂(1)

关键词: