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] 不能为空。 |
Column |
两个属性: IsDbGenerated:是否为自增长(自动标识)。默认基类中的ModelInfo.ID 设为true。 根据您的项目,在不需要的时候,重写该字段,设为False即可。 |
|
StringLength |
限制赋值之后,存入数据库时的长度限制。 |
|
Required |
必填。这里注意下,值类型的变量属性。请在类型后面加?号。必需加?号。 |
|
RegularExpression |
使用正则表达式限制变量。 |
|
Range |
值类型,限定值的大小范围。 |
|
IsJson |
设置为Json格式。其格式为:key=value;key=value |
|
NotJoinAttribute |
设置该属性是否绑定到数据库。默认是True。False时,表示不是数据库的字段。 |
|
DataTypeAttribute |
设置字段在数据库中的对应数据类型,目前框架中没有使用,但也对其进行了保存。 |
本框架中。在对数据库进行修改、添加时。先判断实体类下变量属性如果为Null则不作操作。所以值类型必需加?号。表示可为空。
如果变量不需要跟数据库映射(比如中数据库没有这个字段)加入NotJoinAttribute为False时。则表示不是数据库的字段。
导航
广告时间
QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net
Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。
Farseer 意为:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。
ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)
Farseer.Net的目标是:快速上手、快速开发、简单方便。
1 new User { ID = 1, Name = "张三" }.Insert()