public void FillCache(QueryContext context) { if (!context.Load) { return; } IModifyableCommandBuilder commandBuilder = _objectProvider._mappingInfoContainer.FillCommand(_objectProvider._databaseProvider.GetSelectCommandBuilder()); context.PrepareSelectCommand(commandBuilder); using (DbCommand command = commandBuilder.GetDbCommand()) { command.Connection = GetConnection(); try { ICommitContext commitContext; using (IValueSource valueSource = _objectProvider._databaseProvider.GetValueSource(command)) { TypeMapping mappingInfo = _objectProvider._mappingInfoContainer; commitContext = _objectProvider._cache.Fill(valueSource, x => mappingInfo.GetKeyValues(x), () => (T)mappingInfo.CreateObject(), context); } if (commitContext != null) { commitContext.Commit(); } } finally { _objectProvider._databaseProvider.ReleaseConnection(command.Connection); } } context.SetLoaded(); }
public override string ToString() { try { IModifyableCommandBuilder commandBuilder = _objectProvider._mappingInfoContainer.FillCommand(_objectProvider._databaseProvider.GetSelectCommandBuilder()); Context.PrepareSelectCommand(commandBuilder); DbCommand command = commandBuilder.GetDbCommand(); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("{0};", command.CommandText); foreach (DbParameter parameter in command.Parameters) { stringBuilder.Append($"{parameter.ParameterName} = {parameter.Value},"); } if (!Context.Load) { stringBuilder.Append("(Cache only)"); } else { stringBuilder.Remove(stringBuilder.Length - 1, 1); } return(stringBuilder.ToString()); } catch (Exception ex) { return($"Unparseable:{ex}"); } }
public async Task FillCacheAsync(QueryProvider provider) { QueryContext context = provider.Context.FillCacheContext; if (context.ForceLoad) { return; } IModifyableCommandBuilder commandBuilder = _objectProvider._mappingInfoContainer.FillCommand(_objectProvider._databaseProvider.GetSelectCommandBuilder()); context.PrepareSelectCommand(commandBuilder); context.SetLoaded(); await _queue.EnqueueCommand(context, commandBuilder.GetDbCommand(), (valueSource, result) => _objectProvider._cache.Fill(valueSource, x => _objectProvider._mappingInfoContainer.GetKeyValues(x), () => (T)_objectProvider._mappingInfoContainer.CreateObject(), (QueryContext)result)); }