HelloData之:数据库model的生成。
在源码中提供了doc文件夹,里面包含了EntityBulider.tt,这个是用于生成SQLServer的model层。以此为例
在对应的model层中copy这个文件进去,后期会加入到vs插件形式。根据自己的需要修改当前字符串里面的内容即数据库连接字符串,然后再按Ctrl+S保存执行即可生成对应数据库的对象层。
生成后的样式如下:
生成的model都会继承了BaseEntity,里面包含了当前操作为表对象 public TableTyleEnum TableType = TableTyleEnum.Table;内部会生成当前继承对象的主键值,表名,错误信息,还有ToJsonString().生成当前对象的json格式。
/// <summary> /// /// </summary> [Serializable] public partial class profit_user: BaseEntity { /// <summary> /// ID /// </summary> [Column(IsKeyProperty = true,AutoIncrement=true)] public int id { get; set; } public profit_user() {
/// base.SetIni(this,"profit_user","id"); } /// <summary> /// 用户名 /// </summary> public string name { get; set; } /// <summary> /// 密码 /// </summary> public string password { get; set; } /// <summary> /// 身份.1:超级管理员,2:财务人员 /// </summary> public int? identity { get; set; } //Columns类主要用于代码动态创建时的书写,因为编译器会自动加提示,所以减少了书写的错误几率。 public static class Columns { public const string id="id"; public const string name="name"; public const string password="password"; public const string identity="identity"; } }
如果数据库的表对象在实际操作中不够用,或者需要扩展些对象属性或者方法,只需在同命名空间下加入
//用partial 部分类操作,保证了T4生成的model不会破坏每次的生成结果。
public partial class profit_user
{ [Column(NoSqlProperty = true)]//表示非数据库字段操作,hellodata操作时会自动过滤当前属性 public string RoleName { get { switch (this.identity) { case 1: return "超级管理员"; case 2: return "财务人员"; case 3: return "商务部管理员"; } return ""; } } }
model层的操作基本上就可以了。
附:
ColumnAttribute的代码,可以方便大家的操作。
public class ColumnAttribute : System.Attribute { /// <summary> /// 是否自增 /// </summary> public bool AutoIncrement { get; set; } /// <summary> /// 是否虚拟属性 /// </summary> public bool NoSqlProperty { get; set; } /// <summary> /// 是否为主键 /// </summary> public bool IsKeyProperty { get; set; } public ColumnAttribute() { AutoIncrement = false; IsKeyProperty = false; NoSqlProperty = false; } }
下一段是讲解逻辑层的操作。