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()
原文地址:https://www.cnblogs.com/steden/p/2871167.html