예제 #1
0
        private static DataSet ExecuteStoredProcedure(string tableName, string storedProcedure, QueryOptions queryOptions, Parameter[] parameters)
        {
            if (queryOptions == null)
            {
                queryOptions = new QueryOptions()
                {
                    ConnectionToUse = DefaultConnection
                };
            }
            if (queryOptions.ConnectionToUse == null)
            {
                queryOptions.ConnectionToUse = DefaultConnection;
            }

            IOperable operation = Operation.GetOperationBasedOnConnectionType(ConnectionType);

            return(operation.ExecuteProcedure(tableName, storedProcedure, queryOptions, parameters));
        }
예제 #2
0
        private void EvaluateSelectQuery <T>(Expression <Func <T, bool> > expression, out Result <T> resultado, bool hasCache, ref DataCache <T> dataCache, QueryOptions queryOptions) where T : Cope <T>, IManageable, new()
        {
            if (!dataCache.IsEnabled)
            {
                resultado = operation.ExecuteProcedure(queryOptions, TransactionTypes.Select, true, null, expression);
            }
            else
            {
                resultado = hasCache == true?SelectInCache(expression, dataCache) : operation.ExecuteProcedure(queryOptions, TransactionTypes.Select, true, null, expression);

                if (hasCache && dataCache.IsPartialCache && resultado.Data.Count == 0)
                {
                    resultado = operation.ExecuteProcedure(queryOptions, TransactionTypes.Select, true, null, expression);
                    AlterCache(resultado, ref dataCache);
                }

                if (!resultado.IsFromCache && hasCache)
                {
                    AlterCache(resultado, ref dataCache);
                }

                if (!hasCache && resultado.IsSuccessful)
                {
                    dataCache.Cache           = resultado;
                    dataCache.LastCacheUpdate = DateTime.Now.Ticks;
                }

                if (resultado.IsFromCache)
                {
                    resultado.Data = GetDataBasedFromCacheOnQueryOptions(ref dataCache, queryOptions);
                }
            }
        }