1 Star 0 Fork 148

不正常人类研究中心/Dos.ORM

forked from Microi吾码/Dos.ORM 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
Entity.cs 7.05 KB
一键复制 编辑 原始数据 按行查看 历史
ITdos 提交于 2015-05-12 14:48 +08:00 . Dos.ORM v1.8.5 正式开源
/*************************************************************************
*
* Hxj.Data
*
* 2010-2-10
*
* steven hu
*
* Support: http://www.cnblogs.com/huxj
*
*
* Change History:
*
*
**************************************************************************/
using System;
using System.Collections.Generic;
using System.Data;
using Dos.ORM;
namespace Dos.ORM
{
/// <summary>
/// 实体属性修改记录 (字段修改记录)
/// </summary>
[Serializable]
public class ModifyField
{
private Field field;
private object oldValue;
private object newValue;
/// <summary>
/// 字段
/// </summary>
public Field Field { get { return field; } }
/// <summary>
/// 原始值
/// </summary>
public object OldValue { get { return oldValue; } set { oldValue = value; } }
/// <summary>
/// 新值
/// </summary>
public object NewValue { get { return newValue; } set { newValue = value; } }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="field">字段</param>
/// <param name="oldValue">旧值</param>
/// <param name="newValue">新值</param>
public ModifyField(Field field, object oldValue, object newValue)
{
this.field = field;
this.oldValue = oldValue;
this.newValue = newValue;
}
}
/// <summary>
/// 实体信息
/// </summary>
[Serializable]
public abstract class Entity
{
/// <summary>
/// 表名
/// </summary>
private string tableName;
/// <summary>
/// 是否
/// </summary>
private bool isAttached;
/// <summary>
/// 修改的字段集合
/// </summary>
private List<ModifyField> modifyFields = new List<ModifyField>();
#region 构造函数
/// <summary>
/// 构造函数
/// </summary>
public Entity() { }
/// <summary>
/// 构造函数
/// </summary>
/// <param name="tableName">表名</param>
public Entity(string tableName)
{
this.tableName = tableName;
this.isAttached = false;
}
#endregion
/// <summary>
/// 将实体置为修改状态
/// </summary>
public void Attach()
{
this.isAttached = true;
}
/// <summary>
/// 将实体置为插入状态
/// </summary>
public void DeAttach()
{
this.isAttached = false;
}
/// <summary>
/// 记录 字段修改
/// </summary>
/// <param name="field"></param>
/// <param name="oldValue"></param>
/// <param name="newValue"></param>
public void OnPropertyValueChange(Field field, object oldValue, object newValue)
{
if (isAttached)
{
if (null == oldValue && null == newValue)
return;
if (null != oldValue && null != newValue && newValue.Equals(oldValue))
{
return;
#region HXJ HACK
Type t = newValue.GetType();
if (t == typeof(int))
{
if ((int)newValue != 0)
return;
}
else if (t == typeof(decimal))
{
if (default(decimal) != (decimal)newValue)
return;
}
else if (t == typeof(long))
{
if (default(long) != (long)newValue)
return;
}
else if (t == typeof(bool))
{
if (default(bool) != (bool)newValue)
return;
}
else if (t == typeof(Single))
{
if (default(Single) != (Single)newValue)
return;
}
else
{
return;
}
#endregion
}
lock (modifyFields)
{
bool ishave = false;
foreach (ModifyField mf in modifyFields)
{
if (mf.Field.PropertyName.ToLower().Equals(field.PropertyName.ToLower()))
{
mf.NewValue = newValue;
ishave = true;
break;
}
}
if (!ishave)
{
ModifyField modifyField = new ModifyField(field, oldValue, newValue);
modifyFields.Add(modifyField);
}
}
}
}
/// <summary>
/// 清除修改记录
/// </summary>
public void ClearModifyFields()
{
modifyFields.Clear();
}
/// <summary>
/// Sets the property values.
/// </summary>
/// <param name="reader">The reader.</param>
public virtual void SetPropertyValues(IDataReader reader) { }
/// <summary>
/// Sets the property values.
/// </summary>
/// <param name="row">The row.</param>
public virtual void SetPropertyValues(DataRow row) { }
/// <summary>
/// GetFields
/// </summary>
/// <returns></returns>
public virtual Field[] GetFields() { return null; }
/// <summary>
/// GetValues
/// </summary>
/// <returns></returns>
public virtual object[] GetValues() { return null; }
/// <summary>
/// GetPrimaryKeyFields
/// </summary>
/// <returns></returns>
public virtual Field[] GetPrimaryKeyFields() { return null; }
/// <summary>
/// 标识列
/// </summary>
public virtual Field GetIdentityField()
{
return null;
}
/// <summary>
/// 标识列的名称(例如如Oracle中Sequence名称)
/// </summary>
/// <returns></returns>
public virtual string GetSequence()
{
return null;
}
/// <summary>
/// 返回修改记录
/// </summary>
public List<ModifyField> GetModifyFields()
{
return modifyFields;
}
/// <summary>
/// 是否只读
/// </summary>
public virtual bool IsReadOnly()
{
return false;
}
/// <summary>
/// 获取表名
/// </summary>
public string GetTableName()
{
return tableName;
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/609722679/Dos.ORM.git
git@gitee.com:609722679/Dos.ORM.git
609722679
Dos.ORM
Dos.ORM
master

搜索帮助