📄 dataobject.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
namespace Smark.Data.Mappings
{
[Serializable]
public class DataObject:EntityBase
{
protected override void OnLoadData(System.Data.IDataReader reader)
{
ObjectMapper om = ObjectMapper.GetOM(this.GetType());
om.ReaderToObject(reader, this);
}
public void Delete()
{
ObjectMapper om = ObjectMapper.GetOM(this.GetType());
using (IConnectinContext cc = om.Connection.GetContext())
{
Delete(cc);
}
}
public void Delete(IConnectinContext cc)
{
ObjectMapper om = ObjectMapper.GetOM(this.GetType());
if (om.ID == null)
throw new SmarkException("不存在ID映射描述!");
OnDeleteObject(cc, om.Table, om.ID.ColumnName,
om.ID.Handler.Get(this));
}
public void Save()
{
ObjectMapper om = ObjectMapper.GetOM(this.GetType());
using (IConnectinContext cc = om.Connection.GetContext())
{
Save(cc);
}
}
public void Save(IConnectinContext cc)
{
if (EntityState._FieldState.Count == 0)
return;
ObjectMapper om = ObjectMapper.GetOM(this.GetType());
cc.BeginTransaction();
if (EntityState._Loaded)
{
EditData(cc,om);
}
else
{
NewData(cc, om);
}
cc.Commit();
}
private void EditData(IConnectinContext cc,ObjectMapper om)
{
if (om.ID == null)
throw new SmarkException("不存在ID映射信息,不能进行数据更新操作!");
Update update = new Update(om.Table);
foreach (PropertyMapper pm in om.Properties)
{
if (EntityState._FieldState.ContainsKey(pm.Handler.Property.Name))
{
if (pm.Cast != null)
{
update.AddField(pm.ColumnName,pm.Cast.ToColumn(pm.Handler.Get(this),
pm.Handler.Property.PropertyType));
}
else
{
update.AddField(pm.ColumnName, pm.Handler.Get(this));
}
}
}
update.Where.SqlText.Append(om.ID.ColumnName + "=@p1");
update.Where.Parameters.Add(new Command.Parameter { Name = "p1", Value = om.ID.Handler.Get(this) });
update.Execute(cc);
}
private void NewData(IConnectinContext cc, ObjectMapper om)
{
Insert insert = new Insert(om.Table);
if (om.ID != null)
{
if (om.ID.Value != null)
{
if (!om.ID.Value.AfterByUpdate)
{
om.ID.Value.Executing(cc, this, om.ID,om.Table);
insert.AddField(om.ID.ColumnName, om.ID.Handler.Get(this));
}
}
else
{
insert.AddField(om.ID.ColumnName, om.ID.Handler.Get(this));
}
}
foreach (PropertyMapper pm in om.Properties)
{
if (EntityState._FieldState.ContainsKey(pm.Handler.Property.Name))
{
if (pm.Cast != null)
{
insert.AddField(pm.ColumnName,pm.Cast.ToColumn(pm.Handler.Get(this),pm.Handler.Property.PropertyType));
}
else
{
insert.AddField(pm.ColumnName, pm.Handler.Get(this));
}
}
}
insert.Execute(cc);
if (om.ID != null && om.ID.Value != null && om.ID.Value.AfterByUpdate)
om.ID.Value.Executed(cc, this, om.ID,om.Table);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -