示例#1
0
        public async Task Should_call_async_creator_once_when_context_exists()
        {
            SetupContext();

            var value1 = await sut.GetOrCreateAsync("Key", () => Task.FromResult(++called));

            var value2 = await sut.GetOrCreateAsync("Key", () => Task.FromResult(++called));

            Assert.Equal(1, called);
            Assert.Equal(1, value1);
            Assert.Equal(1, value2);
        }
示例#2
0
        public Task <(IAppEntity, ISchemaEntity)> GetAppWithSchemaAsync(Guid appId, Guid id)
        {
            return(requestCache.GetOrCreateAsync($"GetAppWithSchemaAsync({appId}, {id})", async() =>
            {
                using (Profile.Method <AppProvider>())
                {
                    var app = await grainFactory.GetGrain <IAppGrain>(appId).GetStateAsync();

                    if (!IsExisting(app))
                    {
                        return (null, null);
                    }

                    var schema = await grainFactory.GetGrain <ISchemaGrain>(id).GetStateAsync();

                    if (!IsExisting(schema, false))
                    {
                        return (null, null);
                    }

                    return (app.Value, schema.Value);
                }
            }));