Example #1
0
            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();
            }
Example #2
0
            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}");
                }
            }
Example #3
0
            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));
            }