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);
                }
            }
        }
Esempio n. 2
0
        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);
        }