using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Ant.Data;
using Ant.Frame;
using Newtonsoft.Json;
namespace Ant.ORM
{
//
/// 实体基类
///
[Serializable]
public abstract class EntityBase
{
//private string _OrderBy = "";
/////
///// 排序
/////
//public string OrderBy
//{
// get { return _OrderBy; }
// set { _OrderBy = value; }
//}
private string _WhereSql = "";
///
/// 自定义查询条件
///
[JsonIgnore]
public string WhereSql
{
get
{
return this._WhereSql;
}
set
{
value = value.Trim().ToLower();
if (value.StartsWith("where"))
{
value = value.Substring(5, value.Length - 5);
}
this._WhereSql = value;
}
}
private EntityPersistType persistType;
///
/// 操作类型
///
[JsonIgnore]
public EntityPersistType PersistType
{
get { return persistType; }
set { persistType = value; }
}
///
/// 模块
///
[JsonIgnore]
public abstract string ModuleName { get; set; }
///
/// 排序
///
[JsonIgnore]
public abstract string OrderBy { get; set; }
private Dictionary _entydic;
///
/// 实体集合操作
///
public Dictionary EntyDic
{
get { return _entydic; }
set { _entydic = value; }
}
///
/// 状态值属性
///
[JsonIgnore]
public Dictionary Values
{
get; set;
}
///
/// 给实体赋值
///
/// 字段名称
/// 默认值
protected void SetChanaged(string FieldName, object defaultValue)
{
if (!Values.ContainsKey(FieldName))
{
EntityValue val = new EntityValue();
val.OriginalValue = defaultValue;
val.FieldName = FieldName;
val.IsChanage = false;
Values.Add(FieldName, val);
}
else
{
EntityValue val = Values[FieldName];
if (object.Equals(val.OriginalValue, defaultValue))
{
val.CurrentValue = null;
val.IsChanage = false;
}
else
{
val.CurrentValue = defaultValue;
val.IsChanage = true;
}
}
}
///
/// 获得对象的值
///
/// 字段名称
///
protected object ToValue(string FieldName)
{
if (Values.ContainsKey(FieldName))
{
EntityValue val = Values[FieldName];
if (val.CurrentValue != null)
{
return val.CurrentValue;
}
if (val.OriginalValue != null)
{
return val.OriginalValue;
}
return null;
}
return null;
}
///
/// 属性值修改情况
///
/// 字段名称
/// 当前值
protected void ToChanaged(string FieldName, object currentValue)
{
if (Values.ContainsKey(FieldName))
{
EntityValue val = Values[FieldName];
if (object.Equals(val.OriginalValue, currentValue))
{
val.CurrentValue = null;
val.IsChanage = false;
}
else
{
val.CurrentValue = currentValue;
val.IsChanage = true;
}
}
}
}
}