using Apewer;
using Apewer.Internals;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
namespace Apewer.Source
{
/// 数据库记录通用字段模型。
/// 带有 Independent 特性的模型不包含此类型声明的属性。
[Serializable]
public abstract class Record : IRecord
{
/// 记录主键,一般使用 GUID 的字符串形式。
///
/// 注:
/// 1. 默认长度为 32,需要修改长度时应该重写此属性;
/// 2. 带有 Independent 特性的模型不包含此属性。
///
[Column("_key", ColumnType.NVarChar, 32)]
public virtual string Key { get; set; }
/// 记录的标记,Int64 类型,区分记录的状态。
/// 带有 Independent 特性的模型不包含此属性。
[Column("_flag", ColumnType.Integer)]
public virtual long Flag { get; set; }
/// 重置 Key 属性的值。
public virtual void ResetKey() => Key = TextUtility.Key();
///
public Record()
{
ResetKey();
Flag = DefaultFlag;
}
#region static
/// 创建 Record 对象时的默认 Flag 值。
public static long DefaultFlag { get; set; }
#endregion
#region 运算符。
/// 从 Record 到 Boolean 的隐式转换,判断 Record 对象不为 NULL。
public static implicit operator bool(Record instance) => instance != null;
#endregion
}
}