コード例 #1
0
 private async Task <long> AggressiveCacheOnLazilyLoadAsyncTest(
     IDocumentStore store,
     AsyncTestCaseHolder testCaseHolder,
     AggressiveCacheMode aggressiveCacheMode,
     bool createVersion2 = true)
 {
     return(await AggressiveCacheOnLazilyLoadAsyncTest(store, testCaseHolder.LoadFuncAsync, aggressiveCacheMode, createVersion2));
 }
コード例 #2
0
 private async Task <long> AggressiveCacheOnLazilyLoadTest(
     IDocumentStore store,
     TestCaseHolder testCaseHolder,
     AggressiveCacheMode doNotTrackChanges,
     bool createVersion2 = true)
 {
     return(await AggressiveCacheOnLazilyLoadTest(store, testCaseHolder.LoadFunc, doNotTrackChanges, createVersion2));
 }
コード例 #3
0
        private static async Task <long> AggressiveCacheOnLazilyLoadAsyncTest(
            IDocumentStore store,
            Func <IAsyncDocumentSession, string, Task> loadFuncAsync,
            AggressiveCacheMode aggressiveCacheMode,
            bool createVersion2 = true)
        {
            const string docId = "doc-1";

            using (var session = store.OpenAsyncSession())
            {
                await session.StoreAsync(new Doc(), docId);

                await session.SaveChangesAsync();
            }

            using (var session = store.OpenAsyncSession())
                using (session.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(5), AggressiveCacheMode.TrackChanges))
                {
                    await loadFuncAsync(session, docId);
                }

            if (createVersion2)
            {
                var amre       = new AsyncManualResetEvent();
                var observable = store.Changes().ForDocument(docId);
                await observable.EnsureSubscribedNow();

                observable.Subscribe(_ => amre.Set());

                using var session = store.OpenAsyncSession();
                await session.StoreAsync(new Doc { Version = "2" }, docId);

                await session.SaveChangesAsync();

                await amre.WaitAsync(TimeSpan.FromSeconds(30));
            }

            using (var session = store.OpenAsyncSession())
                using (session.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(5), aggressiveCacheMode))
                {
                    var loadAsync = session.Advanced.Lazily.LoadAsync <Doc>(docId);
                    _ = await loadAsync.Value;
                    return(session.Advanced.NumberOfRequests);
                }
        }
コード例 #4
0
 public AggressiveCacheOptions(TimeSpan duration, AggressiveCacheMode mode)
 {
     Duration = duration;
     Mode     = mode;
 }
コード例 #5
0
 public abstract IDisposable AggressivelyCacheFor(TimeSpan cacheDuration, AggressiveCacheMode mode, string database = null);