static public bool Exec <TTrans>(object it, TFunc <TTrans> func, bool needAllTrue) where TTrans : class, IDataTransactionBasic { if (it == null) { return(needAllTrue); } TTrans dataTransaction = it as TTrans; if (dataTransaction != null) { return(func(dataTransaction)); } IList list = it as IList; if (list == null) { return(needAllTrue); } foreach (object item in list) { //needAllTrue=true, 只要有一個是false就return false,default是return true //needAllTrue=false,只要有一個是true就return true,default是return false if (DataTransactionHelper.Exec(item, func, needAllTrue) != needAllTrue) { return(!needAllTrue); } } return(needAllTrue); }
public void PropagateParent(IDataTransaction parent) { Parent = parent; object value = CurrentData; if (DataTransactionHelper.IsDataTransactionObject(value)) { DataTransactionHelper.PropagateParent(value, parent); } }
public void SetAsOriginal() { canRollbackOriginal = true; object data = CurrentData; if (DataTransactionHelper.IsDataTransactionObject(data)) { DataTransactionHelper.SetAsOriginal(data); return; } OriginalData = Clone(data); }
virtual public void BeginUpdate(params object[] ids) { IDataTransactionBasic dataTa; if (TryGet(out dataTa)) { dataTa.BeginUpdate(ownerObject as IDataTransactionBasic, ids); State = DataTransactionState.Begin; return; } DataTransactionHelper.BeginUpdate(PropertyDataPairList, ownerObject as IDataTransactionBasic, ids); State = DataTransactionState.Begin; }
virtual public void CancelUpdate() { IDataTransactionBasic dataTa; if (TryGet(out dataTa)) { dataTa.CancelUpdate(); State = DataTransactionState.Cancel; return; } DataTransactionHelper.CancelUpdate(PropertyDataPairList); State = DataTransactionState.Cancel; }
public void RollbackOriginal() { CancelUpdate(); if (!canRollbackOriginal) { return; } object data = CurrentData; if (DataTransactionHelper.IsDataTransactionObject(data)) { DataTransactionHelper.RollbackOriginal(data); return; } CurrentData = OriginalData; }
public void CommitUpdate() { object value = CurrentData; if (DataTransactionHelper.IsDataTransactionObject(value)) { DataTransactionHelper.CommitUpdate(value); State = DataTransactionState.Commit; return; } if (isUpdating) { oldPropertyValue = null; isUpdating = false; OnPropertyChanged(); State = DataTransactionState.Commit; } }
public void BeginUpdate(IDataTransaction parent, params object[] ids) { Parent = parent; object value = CurrentData; if (DataTransactionHelper.IsDataTransactionObject(value)) { DataTransactionHelper.BeginUpdate(value, parent, ids); if (value is IList) { Backup(value); } State = DataTransactionState.Begin; return; } Backup(value); isUpdating = true; State = DataTransactionState.Begin; }
public void CancelUpdate() { object value = CurrentData; if (DataTransactionHelper.IsDataTransactionObject(value)) { DataTransactionHelper.CancelUpdate(value); if (value is IList) { Restore(oldPropertyValue); } State = DataTransactionState.Cancel; return; } if (isUpdating) { Restore(oldPropertyValue); isUpdating = false; State = DataTransactionState.Cancel; } }
private bool DoValidate(object value, out ValidatingExceptionMessage exceptionMessage) { exceptionMessage = null; if (DataTransactionHelper.IsDataTransactionObject(value)) { return(DataTransactionHelper.Validate(value, out exceptionMessage)); } IDataOwner dataOwner = PropertyOwner as IDataOwner; bool isPass = (dataOwner != null) ? dataOwner.Validate(value) : (CustomAttribute.IsRequired) ? Validate(value) : true; if (!isPass) { exceptionMessage = new ValidatingExceptionMessage(); exceptionMessage.Reference = PropertyOwner; exceptionMessage.ReferenceProperty = this; } return(isPass); }
static public bool IsEnumerableProperty(object value) { return(DataTransactionHelper.IsEnumerableProperty(value)); }