public static void SetDeleteStatus <T>( Guid objectID, DeleteStatus deleteStatus, List <object> relevanceOperations) { var _DbContext = new EntityDbContext(); var dbSet = _DbContext.Set(typeof(T)); var returnStatus = true; var returnMessage = ""; var bo = dbSet.Find(objectID); if (bo == null) { returnStatus = false; returnMessage = "<li>你所删除的数据不存在,如果确定不是数据逻辑错误原因,请将本情况报告系统管理人员。</li>"; deleteStatus.Initialize(returnStatus, returnMessage); } else { #region 处理关联关系 foreach (var deleteOperationObject in relevanceOperations) { var deleteProperty = deleteOperationObject.GetType().GetProperties().Where(pn => pn.Name == "CanDelete").FirstOrDefault(); var itCanDelete = (bool)deleteProperty.GetValue(deleteOperationObject); var messageProperty = deleteOperationObject.GetType().GetProperties().Where(pn => pn.Name == "OperationMessage").FirstOrDefault(); var messageValue = messageProperty.GetValue(deleteOperationObject) as string; if (!itCanDelete) { returnStatus = false; returnMessage += "<li>" + messageValue + "</li>"; } } #endregion if (returnStatus) { try { dbSet.Remove(bo); _DbContext.SaveChanges(); deleteStatus.Initialize(returnStatus, returnMessage); } catch (System.Data.Entity.Core.EntityException) { returnStatus = false; returnMessage = "<li>无法删除所选数据,其信息正被使用,如果确定不是数据逻辑错误原因,请将本情况报告系统管理人员。</li>"; deleteStatus.Initialize(returnStatus, returnMessage); } } else { deleteStatus.Initialize(returnStatus, returnMessage); } } }
public virtual DeleteStatus DeleteAndSave(Guid id, List <object> relevanceOperations) { var deleteStatus = new DeleteStatus(); var returnStatus = true; var returnMessage = ""; var bo = GetSingle(id); if (bo == null) { returnStatus = false; returnMessage = "你所删除的数据不存在,如果确定不是数据逻辑错误原因,请将本情况报告系统管理人员。"; deleteStatus.Initialize(returnStatus, returnMessage); } else { #region 处理关联关系 var i = 0; foreach (var deleteOperationObject in relevanceOperations) { var deleteProperty = deleteOperationObject.GetType().GetProperties().Where(pn => pn.Name == "CanDelete").FirstOrDefault(); var itCanDelete = (bool)deleteProperty.GetValue(deleteOperationObject); var messageProperty = deleteOperationObject.GetType().GetProperties().Where(pn => pn.Name == "OperationMessage").FirstOrDefault(); var messageValue = messageProperty.GetValue(deleteOperationObject) as string; if (!itCanDelete) { returnStatus = false; returnMessage += (i++) + "、" + messageValue + "。\n"; } } #endregion if (returnStatus) { try { DeleteAndSave(bo); deleteStatus.Initialize(returnStatus, returnMessage); } catch (DbUpdateException) { returnStatus = false; returnMessage = "无法删除所选数据,其信息正被使用,如果确定不是数据逻辑错误原因,请将本情况报告系统管理人员。"; deleteStatus.Initialize(returnStatus, returnMessage); } } else { deleteStatus.Initialize(returnStatus, returnMessage); } } return(deleteStatus); }