zoukankan      html  css  js  c++  java
  • Farseer.net轻量级开源框架 入门篇:实体类

    导航

    目   录:Farseer.net轻量级开源框架 目录

    上一篇:Farseer.net轻量级开源框架 入门篇: 逻辑层的选择

    下一篇:Farseer.net轻量级开源框架 入门篇: 普通逻辑层

    ModelInfo基类,数据库中对应的实体类必需继承此类。是所有操作的一切根源。(类似于.net 的 object 基类)

    后续的一系列扩展操作、数据库操作,将对泛型进行了ModelInfo的限定。

    ModelInfo类不需要大家直接继承。因为后续篇幅中会讲到逻辑层。即:BaseModel、BaseCacheModel、BaseCateModel中。都是继承自该类的。

    所以大家只要继承BaseModel、BaseCacheModel、BaseCateModel其中一个类就行了。在这里只是告诉大家ModelInfo的用途。

    ModelInfo源码
     1 namespace FS.Core.Model
     2 {
     3     /// <summary>
     4     /// 实体类基类信息
     5     /// </summary>
     6     [Serializable]
     7     public class ModelInfo: ICloneable
     8     {
     9         /// <summary>
    10         /// 系统编号
    11         /// </summary>
    12         [Display(Name = "系统编号")]
    13         [Column(IsPrimaryKey = true)]
    14         public virtual int? ID { get; set; }
    15 
    16         /// <summary>
    17         /// 克隆出一个新的对像
    18         /// </summary>
    19         /// <typeparam name="T">对像,必需继续于ModelInfo</typeparam>
    20         public T Clone<T>() where T : ModelInfo
    21         {
    22             return this.MemberwiseClone() as T;
    23         }
    24 
    25         /// <summary>
    26         /// 克隆出一个新的对像
    27         /// </summary>
    28         public object Clone()
    29         {
    30             return this.MemberwiseClone();
    31         }
    32     }
    33 }

    另外有一个基类ModelCateInfo。它也是一个实体类,它继承自上面所说的ModelInfo类。该类用在特殊的数据库表中,即分类功能。(这里只作简单说明,详细请到分类逻辑层中查看)

    ModelCateInfo源码
     1 namespace FS.Core.Model
     2 {
     3     public class ModelCateInfo : ModelInfo
     4     {
     5         /// <summary>
     6         /// 所属ID
     7         /// </summary>
     8         [Display(Name = "所属分类")]
     9         public virtual int? ParentID { get; set; }
    10 
    11         /// <summary>
    12         /// 标题
    13         /// </summary>
    14         [Display(Name = "标题"), StringLength(50), Required()]
    15         public virtual string Caption { get; set; }
    16 
    17         /// <summary>
    18         /// 排序
    19         /// </summary>
    20         [Display(Name = "排序")]
    21         public virtual int? Sort { get; set; }
    22     }
    23 }
    框架中,使用了大量特性,作为属性变量的额外属性
            /// <summary>
            /// 系统编号
            /// </summary>
            [Display(Name = "系统编号")]
            [Column(IsPrimaryKey = true)]
            public virtual int? ID { get; set; }
    
            /// <summary>
            /// 登陆账号
            /// </summary>
            [Display(Name = "登陆账号")]
            [Column(Name = "LoginName")]
            [StringLength(25)]
            [Required()]
            [RegularExpression("[A-Za-z0-9]+", ErrorMessage = "登陆账号只允许使用A-Z或者0-9的字符")]
            public string LoginName { get; set; }
    
            /// <summary>
            /// 冻洁余额
            /// </summary>
            [Display(Name = "冻洁余额")]
            [Column(Name = "CoinsFrozen")]
            [Required()]
            [Range(1, 10)]
            public decimal? CoinsFrozen { get; set; }
    支持的特性列表
    * 表示重要,必填
    必填
    特性名称 描述
    *
    Display
    字段中文名称,框架集成了在赋值之后的值检查情况,如果检测不符号的时候,则会如提示:[Display] 不能为空。
    另外枚举的中文显示也是用这个特性。比如要绑定到DropDownList 要显示中文时用到。
    或者通过枚举的实例.GetName() 可以调用显示中文哦。
     
    Column
    两个属性:
    1)
    IsDbGenerated:是否为自增长(自动标识)。默认基类中的ModelInfo.ID 设为true。
       根据您的项目,在不需要的时候,重写该字段,设为False即可。

    2)Name:数据库字段名。如果跟属性变量的名称一致,则可不用填写。
     
    StringLength
    限制赋值之后,存入数据库时的长度限制。
     
    Required
    必填。这里注意下,值类型的变量属性。请在类型后面加?号。必需加?号。
     
    RegularExpression
    使用正则表达式限制变量。
     
    Range
    值类型,限定值的大小范围。
     
    IsJson
    设置为Json格式。其格式为:key=value;key=value
     
    NotJoinAttribute
    设置该属性是否绑定到数据库。默认是True。False时,表示不是数据库的字段。
     
    DataTypeAttribute
    设置字段在数据库中的对应数据类型,目前框架中没有使用,但也对其进行了保存。
      本框架中。在对数据库进行修改、添加时。先判断实体类下变量属性如果为Null则不作操作。所以值类型必需加?号。表示可为空。
      如果变量不需要跟数据库映射(比如中数据库没有这个字段)加入NotJoinAttribute为False时。则表示不是数据库的字段。

     

    导航

    目   录:Farseer.net轻量级开源框架 目录

    上一篇:Farseer.net轻量级开源框架 入门篇: 逻辑层的选择

    下一篇:Farseer.net轻量级开源框架 入门篇: 普通逻辑层

    广告时间

    QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net

    Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。

    Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。

    ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)

    Farseer.Net的目标是:快速上手、快速开发、简单方便。

    1 new User { ID = 1, Name = "张三" }.Insert()
  • 相关阅读:
    《程序员代码面试指南》第八章 数组和矩阵问题 数组排序之后相邻数的最大差值
    《程序员代码面试指南》第八章 数组和矩阵问题 数组中未出现的最小正整数
    《程序员代码面试指南》第八章 数组和矩阵问题 数组的partition 调整
    《程序员代码面试指南》第八章 数组和矩阵问题 不包含本位置值的累乘数组
    《程序员代码面试指南》第八章 数组和矩阵问题 打印N 个数组整体最大的Top K
    《程序员代码面试指南》第八章 数组和矩阵问题 数组中子数组的最大累乘积
    《程序员代码面试指南》第八章 数组和矩阵问题 在数组中找到一个局部最小的位置
    《程序员代码面试指南》第八章 数组和矩阵问题 子矩阵的最大累加和问题
    MySQL 进阶4 SQL常见函数: 字符函数/数学函数/日期函数/流程控制函数(if/case)
    MySQL 进阶3 排序查询
  • 原文地址:https://www.cnblogs.com/steden/p/2871167.html
Copyright © 2011-2022 走看看