コード例 #1
0
 public async Task NestedPrefetchWhenChildElementIsNullAsyncTest()
 {
     RemoveAllBooks();
     using (var session = Domain.OpenSession()) {
         using (var tx = session.OpenTransaction()) {
             var book0 = new Model.Book {
                 Title = new Model.Title {
                     Text = "T0"
                 }, Category = "1"
             };
             var book1 = new Model.Book {
                 Category = "2"
             };
             tx.Complete();
         }
         using (var tx = session.OpenTransaction()) {
             var prefetcher = session.Query.All <Model.Book>()
                              .Prefetch(b => b.Title.Book).AsAsync();
             var titleField = Domain.Model.Types[typeof(Model.Book)].Fields["Title"];
             var titleType  = Domain.Model.Types[typeof(Model.Title)];
             foreach (var book in await prefetcher)
             {
                 var titleKey = book.GetReferenceKey(titleField);
                 if (titleKey != null)
                 {
                     PrefetchTestHelper.AssertOnlyDefaultColumnsAreLoaded(titleKey, titleType, session);
                 }
             }
         }
     }
 }
コード例 #2
0
 public async Task NestedPrefetchWhenRootElementIsNullAsyncTest()
 {
     RemoveAllBooks();
     using (var session = Domain.OpenSession()) {
         using (var tx = session.OpenTransaction()) {
             var book = new Model.Book {
                 Title = new Model.Title {
                     Text = "T0"
                 }, Category = "1"
             };
             tx.Complete();
         }
         using (var tx = session.OpenTransaction()) {
             var books = session.Query.All <Model.Book>().AsEnumerable().Concat(EnumerableUtils.One <Model.Book>(null))
                         .Prefetch(b => b.Title.Book).AsAsync();
             var titleField = Domain.Model.Types[typeof(Model.Book)].Fields["Title"];
             var titleType  = Domain.Model.Types[typeof(Model.Title)];
             var count      = 0;
             foreach (var book in await books)
             {
                 count++;
                 if (book != null)
                 {
                     var titleKey = book.GetReferenceKey(titleField);
                     if (titleKey != null)
                     {
                         PrefetchTestHelper.AssertOnlyDefaultColumnsAreLoaded(titleKey, titleType, session);
                     }
                 }
             }
             Assert.AreEqual(2, count);
         }
     }
 }
コード例 #3
0
        public void NotificationAboutUnknownForeignKeyWhenItsEntityHasBeenLoadedInAnotherTransactionTest()
        {
            Key book0Key;
            Key title0Key;
            Key book1Key;
            Key title1Key;

            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction()) {
                    CreateBookAndTitleInExistingSession(out title0Key, out book0Key);
                    CreateBookAndTitleInExistingSession(out title1Key, out book1Key);
                    tx.Complete();
                }

            using (var session = Domain.OpenSession()) {
                var prefetchManager = (PrefetchManager)PrefetchProcessorField.GetValue(session.Handler);
                using (var tx = session.OpenTransaction()) {
                    prefetchManager.InvokePrefetch(title0Key, null, new PrefetchFieldDescriptor(title0Key.TypeInfo.Fields["Id"]));
                    prefetchManager.InvokePrefetch(book1Key, null, new PrefetchFieldDescriptor(book1Key.TypeInfo.Fields["Id"]));
                    prefetchManager.InvokePrefetch(title1Key, null, new PrefetchFieldDescriptor(title1Key.TypeInfo.Fields["Id"]));
                    prefetchManager.ExecuteTasks(true);
                }
                using (var tx = session.OpenTransaction()) {
                    prefetchManager.InvokePrefetch(book0Key, null, new PrefetchFieldDescriptor(BookTitleField, null,
                                                                                               true, true, (ownerKey, field, key) => Assert.Fail()));
                    prefetchManager.InvokePrefetch(book1Key, null, new PrefetchFieldDescriptor(BookTitleField, null,
                                                                                               true, true, (ownerKey, field, key) => Assert.Fail()));
                    prefetchManager.ExecuteTasks(true);

                    PrefetchTestHelper.AssertOnlyDefaultColumnsAreLoaded(title0Key, ITitleType, session);
                }
            }
        }
コード例 #4
0
        public async Task StructureFieldsPrefetchAsyncTest()
        {
            Key containerKey;
            Key bookShop0Key;
            Key book0Key;
            Key bookShop1Key;
            Key book1Key;

            PrefetchTestHelper.CreateOfferContainer(Domain, out containerKey, out book0Key, out bookShop0Key,
                                                    out book1Key, out bookShop1Key);

            using (var session = Domain.OpenSession())
                using (var tx = session.OpenTransaction()) {
                    var containers = session.Query.Many <Model.OfferContainer>(EnumerableUtils.One(containerKey))
                                     .Prefetch(oc => oc.RealOffer.Book)
                                     .Prefetch(oc => oc.IntermediateOffer.RealOffer.BookShop).AsAsync();
                    foreach (var key in await containers)
                    {
                        PrefetchTestHelper.AssertOnlyDefaultColumnsAreLoaded(book0Key, book0Key.TypeInfo, session);
                        PrefetchTestHelper.AssertOnlyDefaultColumnsAreLoaded(bookShop1Key, bookShop1Key.TypeInfo, session);
                    }
                }
        }