public virtual TransactionResult Delete(T entity, string headerkeyvalue = null, bool useLog = true) { if (Context.Database.Connection.State != ConnectionState.Open) { Context.Database.Connection.Open(); } TransactionScope scope = new TransactionScope(); try { var keyvalue = entity.GetValue(MasterKey.IsNullOrEmpty() ? GetKeys[0] : MasterKey); var row = Find(entity); entity = row; Context.Entry(entity).State = EntityState.Deleted; if (BeforeDelete != null) { var eventUseData = new EventUseData(); BeforeDelete.Invoke(entity, Context, eventUseData); if (eventUseData.Cancel) { scope.Dispose(); return(eventUseData.Message); } } //if (_user.FollowUp && useLog) //{ // Context.LogEntity(entity, _user, GetKeys[0], _formType, headerkeyvalue, headerkeyvalue); //} Context.SaveChanges(); //var lkpWebControllers = Context.lkp_WebControllers.FirstOrDefault(c => c.formType == _formType); //c.ControllerName.Equals(_controllername, StringComparison.OrdinalIgnoreCase) || //if (lkpWebControllers != null) //{ // int formType = lkpWebControllers.formType; // RemoveAttachments(formType, keyvalue.ToString()); //} scope.Complete(); if (AfterDelete != null) { EventBase eventMessage = new EventBase { Message = TransactionResult.None }; AfterDelete.Invoke(entity, Context, eventMessage); if (eventMessage.Message != TransactionResult.None) { return(eventMessage.Message); } } return(TransactionResult.DeleteSuccess); } catch (Exception ex) { HandleException(ex); scope.Dispose(); Context.Database.Connection.Close(); //Logger.LogSystemError(_user.UserId.ToString(), ex); return(TransactionResult.DeleteFailed); } finally { scope.Dispose(); } }
public virtual TransactionResult Save(T entity, bool edit, string headerkeyvalue = null, bool useLog = true) { if (Context.Database.Connection.State != ConnectionState.Open) { Context.Database.Connection.Open(); } TransactionScope scope = new TransactionScope(); try { T o; if (Exists(entity)) { if (!edit) { return(TransactionResult.IsExists); } o = Find(entity); if (entity.GetType().GetProperties().Any(p => p.Name.Equals("CreatedBy", StringComparison.OrdinalIgnoreCase))) { entity.SetValue("CreatedBy", o.GetValue("CreatedBy")); entity.SetValue("CreatedAt", o.GetValue("CreatedAt")); entity.SetValue("UpdatedBy", o.GetValue("UpdatedBy")); entity.SetValue("UpdatedAt", o.GetValue("UpdatedAt")); } Context.Entry(o).CurrentValues.SetValues(entity); if (Context.Entry(o).State == EntityState.Modified && entity.GetType().GetProperties().Any(p => p.Name.Equals("UpdatedBy", StringComparison.OrdinalIgnoreCase))) { //o.SetValue("UpdatedBy", _user.UserId.ToInt()); o.SetValue("UpdatedAt", DateTime.Now); } } else { if (entity.GetType().GetProperties().Any(p => p.Name.Equals("CreatedBy", StringComparison.OrdinalIgnoreCase))) { //entity.SetValue("CreatedBy", _user.UserId.ToInt()); entity.SetValue("CreatedAt", DateTime.Now); } Context.Entry(entity).State = EntityState.Added; o = entity; } if (BeforeSave != null) { var eventUseData = new EventUseData(); BeforeSave.Invoke(o, Context, eventUseData); if (eventUseData.Cancel) { scope.Dispose(); return(eventUseData.Message); } } //if (_user.FollowUp && useLog) //{ // Context.LogEntity(o, _user, GetKeys[0], _formType, headerkeyvalue, headerkeyvalue); //} Context.SaveChanges(); scope.Complete(); if (AfterSave != null) { var eventMessage = new EventBase { Message = TransactionResult.None }; AfterSave.Invoke(o, Context, eventMessage); if (eventMessage.Message != TransactionResult.None) { return(eventMessage.Message); } } return(TransactionResult.SaveSuccess); } catch (Exception ex) { HandleException(ex); scope.Dispose(); Context.Database.Connection.Close(); //Logger.LogSystemError(_user.UserId.ToString(), ex); return(TransactionResult.SaveFailed); } finally { scope.Dispose(); } }