public int SortAdd(KnowledgeSort entity) { entity.Kns_CrtTime = DateTime.Now; //如果没有排序号,则自动计算 if (entity.Kns_Tax < 1) { object obj = Gateway.Default.Max <KnowledgeSort>(KnowledgeSort._.Kns_Tax, KnowledgeSort._.Cou_ID == entity.Cou_ID && KnowledgeSort._.Kns_PID == entity.Kns_PID); entity.Kns_Tax = obj is int?(int)obj + 1 : 0; } Song.Entities.Organization org = Business.Do <IOrganization>().OrganCurrent(); if (org != null) { entity.Org_ID = org.Org_ID; entity.Org_Name = org.Org_Name; } return(Gateway.Default.Save <KnowledgeSort>(entity)); }
public void SortSave(KnowledgeSort entity) { using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save <KnowledgeSort>(entity); tran.Update <Knowledge>(new Field[] { Knowledge._.Kns_Name }, new object[] { entity.Kns_Name }, Knowledge._.Kns_ID == entity.Kns_ID); tran.Commit(); } catch (Exception ex) { tran.Rollback(); throw ex; } finally { tran.Close(); } } }
/// <summary> /// 将当前项目向下移动;仅在当前对象的同层移动,即同一父节点下的对象这前移动; /// </summary> /// <param name="id"></param> /// <returns>如果已经处于顶端,则返回false;移动成功,返回true</returns> public bool SortRemoveDown(int id) { //当前对象 KnowledgeSort current = Gateway.Default.From <KnowledgeSort>().Where(KnowledgeSort._.Kns_ID == id).ToFirst <KnowledgeSort>(); int tax = current.Kns_Tax; //下一个对象,即弟弟对象;弟弟不存则直接返回false; KnowledgeSort next = Gateway.Default.From <KnowledgeSort>() .Where(KnowledgeSort._.Kns_Tax > tax && KnowledgeSort._.Kns_PID == current.Kns_PID && KnowledgeSort._.Cou_ID == current.Cou_ID) .OrderBy(KnowledgeSort._.Kns_Tax.Asc).ToFirst <KnowledgeSort>(); if (next == null) { return(false); } //交换排序号 current.Kns_Tax = next.Kns_Tax; next.Kns_Tax = next.Kns_Tax == tax ? tax + 1 : tax; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save <KnowledgeSort>(current); tran.Save <KnowledgeSort>(next); tran.Commit(); return(true); } catch { tran.Rollback(); throw; } finally { tran.Close(); } } }
/// <summary> /// 将当前项目向上移动;仅在当前对象的同层移动,即同一父节点下的对象这前移动; /// </summary> /// <param name="id"></param> /// <returns>如果已经处于顶端,则返回false;移动成功,返回true</returns> public bool SortRemoveUp(int id) { //当前对象 KnowledgeSort current = Gateway.Default.From <KnowledgeSort>().Where(KnowledgeSort._.Kns_ID == id).ToFirst <KnowledgeSort>(); int tax = current.Kns_Tax; //上一个对象,即兄长对象;兄长不存则直接返回false; KnowledgeSort prev = Gateway.Default.From <KnowledgeSort>() .Where(KnowledgeSort._.Kns_Tax < tax && KnowledgeSort._.Kns_PID == current.Kns_PID && KnowledgeSort._.Cou_ID == current.Cou_ID) .OrderBy(KnowledgeSort._.Kns_Tax.Desc).ToFirst <KnowledgeSort>(); if (prev == null) { return(false); } //交换排序号 current.Kns_Tax = prev.Kns_Tax; prev.Kns_Tax = prev.Kns_Tax == tax ? tax - 1 : tax; using (DbTrans tran = Gateway.Default.BeginTrans()) { try { tran.Save <KnowledgeSort>(current); tran.Save <KnowledgeSort>(prev); tran.Commit(); return(true); } catch { tran.Rollback(); throw; } finally { tran.Close(); } } }