- 增加没有主键ID的抽象类,使能自义主键字段实现MODEL
抽象类定义结构为/// <summary> /// 基类,不包含任何字段 /// 如果有自定义主键名对象,请继承此类型 /// </summary> [Serializable] public abstract class IModel : ICloneable
/// <summary> /// 基类,包含Id, AddTime字段 /// </summary> [Serializable] public abstract class IModelBase : IModel { /// <summary> /// 自增主键 /// </summary> [Attribute.Field(PrimaryKey = true)] public int Id { get; set; } private DateTime addTime = DateTime.Now; /// <summary> /// 添加时间 /// </summary> public DateTime AddTime { get { return addTime; } set { addTime = value; } } }
通过此改动,使继承IModel能转化任意类型为CRL操作对象,因此老系统也能进行升级为CRL了
对于自定义主键对象,需指定主键属性public class Test:CRL.IModel { [CRL.Attribute.Field(PrimaryKey=true)]//指定属性为主键 public int Key2 { get;set; } }
- 增加虚拟字段转换
[CRL.Attribute.Field(VirtualField = "year(AddTime)")] public string Year { get; set; } public DateTime AddTime { get;set; }
Year属性为虚拟字段,查询时会按year(AddTime)结果映射
- 增加属性覆盖
public class ClassA : CRL.IModelBase { public string DataType { get; set; } } public class ClassB:ClassA { public new int DataType { get; set; } }
ClassB继承ClassA,对象将按int DateType 映射
新DLL已打包在示例中,点击下载