欢迎加入讨论群:241532755 一花一世界,一叶一菩提。码农日志开始记载键盘上的舞蹈。

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;
        }
    }

 

下一段是讲解逻辑层的操作。

 

posted @ 2013-04-02 15:03  码农日志  阅读(447)  评论(0编辑  收藏  举报