public override void OnInserted(DomainObject obj, DataTable table) { DataContext.Current.OpenLock(QueryLevel.Single); var id = (obj as IEntityObject).GetIdentity(); var parent = obj.GetValue <IEntityObject>(this.ParentProperty); if (SqlContext.GetDbType() == DatabaseType.SQLServer) { if (parent.IsEmpty()) { //自身为根 DataPortal.Direct(obj.ObjectType, (conn) => { var sql = string.Format("update dbo.{0} set lft=@lft,rgt=@rgt,rootId=@id where id=@id;", table.Name); conn.Execute(sql, new { lft = 0, rgt = 1, id }); }); } else { var parentId = parent.GetIdentity(); var sql = _getUpdateLRForInsertSqlBySqlServer(table.Name); //显示开启锁 DataPortal.Direct(obj.ObjectType, (conn) => { conn.Execute(sql, new { id, parentId }); }); } return; } throw new MapperNotImplementedException(obj.ObjectType, "insert"); }
public override void OnPreDelete(DomainObject obj, DataTable table) { var id = (obj as IEntityObject).GetIdentity(); if (SqlContext.GetDbType() == DatabaseType.SQLServer) { var sql = _getUpdateLRForDeleteSqlBySqlServer(table.Name); DataPortal.Direct(obj.ObjectType, (conn) => { var result = conn.Execute(sql, new { id }); }); return; } throw new MapperNotImplementedException(obj.ObjectType, "delete"); }