public async Task <IList <ContentItemIndex <T> > > GetContentItemListAsync <T>(
            string contentType,
            DateTime?dateFrom,
            bool?published,
            bool?isDeleted)
        {
            using (var dbContext = _databaseContextFactory.CreateDatabaseContext())
            {
                var result = await dbContext.GetContentItemListAsync(contentType, dateFrom, published, isDeleted);

                return(result
                       .Select(item => item.ToInterface <T>())
                       .ToArray());
            }
        }
예제 #2
0
        private void EnsureThreadSafeDatabaseContextInstance()
        {
            if (!_contextInstantiated)
            {
                lock (_instanceInstantiateLockObj)
                {
                    if (!_contextInstantiated)
                    {
                        _databaseContext     = _databaseContextFactory.CreateDatabaseContext();
                        _contextInstantiated = true;
                    }
                }
            }

            if (_localContextInitialised)
            {
                return;
            }
            if (!_globalContextInitialised)
            {
                lock (GlobalInitialiseLockObj)
                {
                    if (!_globalContextInitialised)
                    {
                        // http://msdn.microsoft.com/en-us/library/cc853327(v=vs.100).aspx
                        // Execute a query to ensure View Generation occurs
                        //var count = _databaseContext.EntitySet<EntityAudit>().Count();
                        _globalContextInitialised = true;
                    }
                }
            }

            _localContextInitialised = true;
        }
    /// <inheritdoc />
    public async Task AddRequestResultAsync(RequestResultModel requestResult, ResponseModel responseModel)
    {
        using var ctx = _databaseContextFactory.CreateDatabaseContext();
        var hasResponse = responseModel != null;

        requestResult.HasResponse = hasResponse;
        var json = JsonConvert.SerializeObject(requestResult);
        await ctx.ExecuteAsync(_queryStore.AddRequestQuery,
                               new
        {
            requestResult.CorrelationId,
            requestResult.ExecutingStubId,
            requestResult.RequestBeginTime,
            requestResult.RequestEndTime,
            Json        = json,
            HasResponse = hasResponse
        });

        if (hasResponse)
        {
            await ctx.ExecuteAsync(_queryStore.AddResponseQuery,
                                   new
            {
                requestResult.CorrelationId,
                responseModel.StatusCode,
                Headers = JsonConvert.SerializeObject(responseModel.Headers),
                Body    = responseModel.Body != null ? Convert.ToBase64String(responseModel.Body) : string.Empty,
                responseModel.BodyIsBinary
            });
        }
    }