public ResultDto Delete <T>(object predicate, int?commandTimeout = null, bool isPhysics = false) where T : class { var resultDto = new ResultDto(); var isFrom = typeof(IDeletionAuditedEntity).IsAssignableFrom(typeof(T)); if (isPhysics || !isFrom) { resultDto.Result = ConnExecute(conn => conn.Delete <T>(predicate, null, commandTimeout)); return(resultDto); } var kardSession = KardIoc.GetService <IKardSession>(); var logicDeleteEntity = ConnExecute(conn => conn.FirstOrDefault <T>(predicate, null, commandTimeout)) as IDeletionAuditedEntity; logicDeleteEntity.IsDeleted = true; logicDeleteEntity.DeleterUserId = kardSession.UserId; logicDeleteEntity.DeletionTime = DateTime.Now; resultDto.Result = ConnExecute(conn => conn.Update(logicDeleteEntity as T, null, commandTimeout)); return(resultDto); //var resultDto = new ResultDto(); //resultDto.Result = ConnExecute(conn => conn.Delete<T>(entity, null, commandTimeout)); //return resultDto; }
public ResultDto Delete <T>(T entity, int?commandTimeout = null) where T : class { var resultDto = new ResultDto(); var logicDeleteEntity = entity as IDeletionAuditedEntity; if (logicDeleteEntity == null) { resultDto.Result = ConnExecute(conn => conn.Delete <T>(entity, null, commandTimeout)); return(resultDto); } var kardSession = KardIoc.GetService <IKardSession>(); logicDeleteEntity = ConnExecute(conn => conn.FirstOrDefault <IDeletionAuditedEntity>(entity, null, commandTimeout)); logicDeleteEntity.IsDeleted = true; logicDeleteEntity.DeleterUserId = kardSession.UserId; logicDeleteEntity.DeletionTime = DateTime.Now; resultDto.Result = ConnExecute(conn => conn.Update(logicDeleteEntity, null, commandTimeout)); return(resultDto); //var resultDto = new ResultDto(); //resultDto.Result = ConnExecute(conn => conn.Delete<T>(entity, null, commandTimeout)); //return resultDto; }