/// <summary>Expire caching item.</summary> /// <returns>true if it succeeds, false if it fails which usually means another process is already cleaning it.</returns> public static bool ExpireCache() { return(EvalManager.ExpireCache()); }
public object InternalEval() { var item = Item; var lastAccess = DateTime.Now; // Overwrite last access item.LastAccess = lastAccess; if (item.Delegate != null) { item.Delegate.LastAccess = lastAccess; } // CHECK if the garbage collection should be invoked if (lastAccess > EvalManager.Configuration.ExpireCacheNextScheduled) { EvalManager.ExpireCache(); } var code = item.Code; SQLNETParallelItem parallelValue; if (ValueParallel != 0) { parallelValue = item.GetParallelValue(ValueParallel); } else { parallelValue = new SQLNETParallelItem(); } //var parallelValue = item; object result; if (item.IsImpersonate) { WindowsImpersonationContext impersonatedIdentity = null; if (SqlContext.WindowsIdentity != null) { var currentIdentity = SqlContext.WindowsIdentity; impersonatedIdentity = currentIdentity.Impersonate(); } try { if (item.Delegate == null) { item.Delegate = EvalManager.Configuration.CompileSQLNET(code, item.ParameterTypes.InnerDictionary); item.IsCompiled = true; } result = item.Delegate.Delegate(parallelValue.ParameterValues); } finally { if (impersonatedIdentity != null) { impersonatedIdentity.Undo(); } } } else { if (item.Delegate == null) { item.Delegate = EvalManager.Configuration.CompileSQLNET(code, item.ParameterTypes.InnerDictionary); item.IsCompiled = true; } result = item.Delegate.Delegate(parallelValue.ParameterValues); } // RELEASE parallel item once resolved if (ValueParallel != 0) { Item.ParallelItems.TryRemove(parallelValue); } if (Item.IsAutoDispose) { Dispose(); } return(result); // if (item.ParameterTables.Count > 0) // { // var s = @" //using (SqlConnection connection = new SqlConnection(""context connection = true"")) //{ // using (SqlCommand command = new SqlCommand()) // { // command.Connection = connection; // connection.Open(); // [SQLNET_Code] // } //} //"; // //var list = new List<string>(); // //foreach (DictionaryEntry parameterTable in item.ParameterTables) // //{ // // list.Add(string.Concat("command.CommandText = 'SELECT * FROM ", parameterTable.Value, "';")); // // list.Add(string.Concat(parameterTable.Key, " = command.ExecuteDataTable();")); // // list.Add(parameterTable.Key + ".ExtendedProperties['ZZZ_Select'] = command.CommandText"); // //} // //code = s.Replace("[SQLNET_Code]", string.Join(Environment.NewLine, list)) + code; // //throw new Exception(code); // } }