/// <summary> /// 新增数据 /// </summary> /// <typeparam name="T">要新增的数据类型</typeparam> /// <param name="newitem">要新增的数据</param> /// <param name="noty">新增数据的通知</param> /// <returns>返回新增数据的上下文</returns> protected DataUpdateContext AddNewData <T>(T newitem, IUpdateDataNoty noty) { CheckDataModelIsCanUpdate <T>(); DataUpdateContext dc = new DataUpdateContext() { CheckRangle = FieldSelectRange.All, UpdateRangle = FieldSelectRange.All, Data = newitem, ModalState = ModalState.AddNew, ModalType = typeof(T), UpdateDataNoty = noty }; AddUpdateContext(dc); return(dc); }
/// <summary> /// 通过主键值删除数据 /// </summary> /// <typeparam name="T">要删除的数据类型</typeparam> /// <param name="id">要删除的数据的主键值</param> /// <param name="noty">删除数据的通知</param> /// <returns>返回删除数据的上下文</returns> protected DataUpdateContext DeleteDataById <T>(long id, IUpdateDataNoty noty) where T : class, IDataId, new() { CheckDataModelIsCanUpdate <T>(); T delitem = new T(); delitem.Id = id; DataUpdateContext dc = new DataUpdateContext() { Data = delitem, ModalState = ModalState.Delete, ModalType = typeof(T), UpdateDataNoty = noty }; AddUpdateContext(dc); return(dc); }
/// <summary> /// 完整的修改数据 /// </summary> /// <typeparam name="T">要修改的数据类型</typeparam> /// <param name="updateitem">要修改的数据</param> /// <param name="noty">修改数据的通知</param> /// <returns>返回修改数据的上下文</returns> protected DataUpdateContext UpdateData <T>(T updateitem, IUpdateDataNoty noty) { return(UpdateData(updateitem, FieldSelectRange.All, null, noty)); }
/// <summary> /// 修改数据 /// </summary> /// <typeparam name="T">要修改的数据类型</typeparam> /// <param name="updateitem">要修改的数据</param> /// <param name="updaterangle">要修改的数据的字段范围</param> /// <param name="updatefieldnames">updaterangle指定的范围的字段数组</param> /// <param name="noty">修改数据的通知</param> /// <returns>返回修改数据的上下文</returns> protected DataUpdateContext UpdateData <T>(T updateitem, FieldSelectRange updaterangle, IEnumerable <string> updatefieldnames, IUpdateDataNoty noty) { CheckDataModelIsCanUpdate <T>(); DataUpdateContext dc = new DataUpdateContext() { CheckRangle = updaterangle, CheckFieldNames = updatefieldnames, UpdateRangle = updaterangle, UpdateFieldNames = updatefieldnames, Data = updateitem, ModalState = ModalState.Update, ModalType = typeof(T), UpdateDataNoty = noty }; string softdelKey = typeof(T).GetDataModel().GetSoftDeleteFieldName(); if (!string.IsNullOrEmpty(softdelKey)) { switch (updaterangle) { case FieldSelectRange.All: { dc.CheckRangle = FieldSelectRange.IgnoreFields; dc.CheckFieldNames = new string[] { softdelKey }; dc.UpdateRangle = FieldSelectRange.IgnoreFields; dc.UpdateFieldNames = new string[] { softdelKey }; break; } case FieldSelectRange.IgnoreFields: { IEnumerable <string> x = new string[] { softdelKey }; if (updatefieldnames != null) { if (updatefieldnames.FirstOrDefault(f => string.Equals(f, softdelKey, StringComparison.OrdinalIgnoreCase)) == null) { x = x.Union(updatefieldnames); } else { x = updatefieldnames; } } dc.CheckFieldNames = x; dc.UpdateFieldNames = x; break; } case FieldSelectRange.OnlyFields: { if (updatefieldnames != null) { IEnumerable <string> x = updatefieldnames.Where(f => !string.Equals(f, softdelKey, StringComparison.OrdinalIgnoreCase)).ToArray(); dc.CheckFieldNames = x; dc.UpdateFieldNames = x; } break; } } } AddUpdateContext(dc); return(dc); }