1- // Copyright (C) 2009-2025 Xtensive LLC.
1+ // Copyright (C) 2009-2026 Xtensive LLC.
22// This code is distributed under MIT license terms.
33// See the License.txt file in the project root for more information.
44// Created by: Alexander Nikolaev
1616using Xtensive . Orm . Model ;
1717using Xtensive . Orm . Tests . ObjectModel ;
1818using Xtensive . Orm . Tests . ObjectModel . ChinookDO ;
19+ using PrefetchModel = Xtensive . Orm . Tests . Storage . Prefetch . Model ;
1920
2021namespace Xtensive . Orm . Tests . Storage . Prefetch
2122{
@@ -39,7 +40,8 @@ protected override DomainConfiguration BuildConfiguration()
3940 {
4041 var config = base . BuildConfiguration ( ) ;
4142 config . NamingConvention . NamespacePolicy = NamespacePolicy . AsIs ;
42- config . Types . RegisterCaching ( typeof ( Model . Offer ) . Assembly , typeof ( Model . Offer ) . Namespace ) ;
43+ // additonal types complementing Chinook model
44+ config . Types . RegisterCaching ( typeof ( PrefetchModel . Offer ) . Assembly , typeof ( PrefetchModel . Offer ) . Namespace ) ;
4345 return config ;
4446 }
4547
@@ -619,7 +621,7 @@ public void ArgumentsTest()
619621 AssertEx . Throws < KeyNotFoundException > ( ( ) => session . Query . All < Track > ( )
620622 . Prefetch ( t => t . PersistenceState )
621623 . ToList ( ) ) ;
622- var d = session . Query . Many < Model . OfferContainer > ( EnumerableUtils . One ( Key . Create < Model . OfferContainer > ( Domain , 1 ) ) )
624+ var d = session . Query . Many < PrefetchModel . OfferContainer > ( EnumerableUtils . One ( Key . Create < PrefetchModel . OfferContainer > ( Domain , 1 ) ) )
623625 . Prefetch ( oc => oc . IntermediateOffer . AnotherContainer . RealOffer . Book )
624626 . ToList ( ) ;
625627 }
@@ -639,7 +641,7 @@ public async Task ArgumentsAsyncTest()
639641 _ = Assert . ThrowsAsync < KeyNotFoundException > ( async ( ) => ( await session . Query . All < Track > ( )
640642 . Prefetch ( t => t . PersistenceState ) . ExecuteAsync ( ) )
641643 . ToList ( ) ) ;
642- var d = ( await session . Query . Many < Model . OfferContainer > ( EnumerableUtils . One ( Key . Create < Model . OfferContainer > ( Domain , 1 ) ) )
644+ var d = ( await session . Query . Many < PrefetchModel . OfferContainer > ( EnumerableUtils . One ( Key . Create < PrefetchModel . OfferContainer > ( Domain , 1 ) ) )
643645 . Prefetch ( oc => oc . IntermediateOffer . AnotherContainer . RealOffer . Book ) . ExecuteAsync ( ) )
644646 . ToList ( ) ;
645647 }
@@ -694,14 +696,14 @@ public void RootElementIsNullPrefetchTest()
694696 RemoveAllBooks ( ) ;
695697 using ( var session = Domain . OpenSession ( ) ) {
696698 using ( var tx = session . OpenTransaction ( ) ) {
697- _ = new Model . Book { Title = new Model . Title { Text = "T0" } , Category = "1" } ;
699+ _ = new PrefetchModel . Book { Title = new PrefetchModel . Title { Text = "T0" } , Category = "1" } ;
698700 tx . Complete ( ) ;
699701 }
700702 using ( var tx = session . OpenTransaction ( ) ) {
701- var books = session . Query . All < Model . Book > ( ) . AsEnumerable ( )
702- . Concat ( EnumerableUtils . One < Model . Book > ( null ) ) . Prefetch ( b => b . Title ) ;
703- var titleField = Domain . Model . Types [ typeof ( Model . Book ) ] . Fields [ nameof ( Model . Book . Title ) ] ;
704- var titleType = Domain . Model . Types [ typeof ( Model . Title ) ] ;
703+ var books = session . Query . All < PrefetchModel . Book > ( ) . AsEnumerable ( )
704+ . Concat ( EnumerableUtils . One < PrefetchModel . Book > ( null ) ) . Prefetch ( b => b . Title ) ;
705+ var titleField = Domain . Model . Types [ typeof ( PrefetchModel . Book ) ] . Fields [ nameof ( PrefetchModel . Book . Title ) ] ;
706+ var titleType = Domain . Model . Types [ typeof ( PrefetchModel . Title ) ] ;
705707 var count = 0 ;
706708 foreach ( var book in books ) {
707709 count ++ ;
@@ -721,15 +723,15 @@ public async Task RootElementIsNullPrefetchAsyncTest()
721723 RemoveAllBooks ( ) ;
722724 await using ( var session = await Domain . OpenSessionAsync ( ) ) {
723725 await using ( var tx = session . OpenTransaction ( ) ) {
724- _ = new Model . Book { Title = new Model . Title { Text = "T0" } , Category = "1" } ;
726+ _ = new PrefetchModel . Book { Title = new PrefetchModel . Title { Text = "T0" } , Category = "1" } ;
725727 tx . Complete ( ) ;
726728 }
727729
728730 await using ( var tx = session . OpenTransaction ( ) ) {
729- var books = session . Query . All < Model . Book > ( ) . AsEnumerable ( )
730- . Concat ( EnumerableUtils . One < Model . Book > ( null ) ) . Prefetch ( b => b . Title ) . AsAsyncEnumerable ( ) ;
731- var titleField = Domain . Model . Types [ typeof ( Model . Book ) ] . Fields [ nameof ( Model . Book . Title ) ] ;
732- var titleType = Domain . Model . Types [ typeof ( Model . Title ) ] ;
731+ var books = session . Query . All < PrefetchModel . Book > ( ) . AsEnumerable ( )
732+ . Concat ( EnumerableUtils . One < PrefetchModel . Book > ( null ) ) . Prefetch ( b => b . Title ) . AsAsyncEnumerable ( ) ;
733+ var titleField = Domain . Model . Types [ typeof ( PrefetchModel . Book ) ] . Fields [ nameof ( PrefetchModel . Book . Title ) ] ;
734+ var titleType = Domain . Model . Types [ typeof ( PrefetchModel . Title ) ] ;
733735 var count = 0 ;
734736 await foreach ( var book in books ) {
735737 count ++ ;
@@ -749,15 +751,15 @@ public void NestedPrefetchWhenChildElementIsNullTest()
749751 RemoveAllBooks ( ) ;
750752 using ( var session = Domain . OpenSession ( ) ) {
751753 using ( var tx = session . OpenTransaction ( ) ) {
752- _ = new Model . Book { Title = new Model . Title { Text = "T0" } , Category = "1" } ;
753- _ = new Model . Book { Category = "2" } ;
754+ _ = new PrefetchModel . Book { Title = new Model . Title { Text = "T0" } , Category = "1" } ;
755+ _ = new PrefetchModel . Book { Category = "2" } ;
754756 tx . Complete ( ) ;
755757 }
756758 using ( var tx = session . OpenTransaction ( ) ) {
757- var prefetcher = session . Query . All < Model . Book > ( )
759+ var prefetcher = session . Query . All < PrefetchModel . Book > ( )
758760 . Prefetch ( b => b . Title . Book ) ;
759- var titleField = Domain . Model . Types [ typeof ( Model . Book ) ] . Fields [ nameof ( Model . Book . Title ) ] ;
760- var titleType = Domain . Model . Types [ typeof ( Model . Title ) ] ;
761+ var titleField = Domain . Model . Types [ typeof ( PrefetchModel . Book ) ] . Fields [ nameof ( Model . Book . Title ) ] ;
762+ var titleType = Domain . Model . Types [ typeof ( PrefetchModel . Title ) ] ;
761763 foreach ( var book in prefetcher ) {
762764 var titleKey = book . GetReferenceKey ( titleField ) ;
763765 if ( titleKey != null ) {
@@ -774,16 +776,16 @@ public async Task NestedPrefetchWhenChildElementIsNullAsyncTest()
774776 RemoveAllBooks ( ) ;
775777 await using ( var session = await Domain . OpenSessionAsync ( ) ) {
776778 await using ( var tx = session . OpenTransaction ( ) ) {
777- _ = new Model . Book { Title = new Model . Title { Text = "T0" } , Category = "1" } ;
778- _ = new Model . Book { Category = "2" } ;
779+ _ = new PrefetchModel . Book { Title = new Model . Title { Text = "T0" } , Category = "1" } ;
780+ _ = new PrefetchModel . Book { Category = "2" } ;
779781 tx . Complete ( ) ;
780782 }
781783
782784 await using ( var tx = session . OpenTransaction ( ) ) {
783- var prefetcher = session . Query . All < Model . Book > ( )
785+ var prefetcher = session . Query . All < PrefetchModel . Book > ( )
784786 . Prefetch ( b => b . Title . Book ) . AsAsyncEnumerable ( ) ;
785- var titleField = Domain . Model . Types [ typeof ( Model . Book ) ] . Fields [ nameof ( Model . Book . Title ) ] ;
786- var titleType = Domain . Model . Types [ typeof ( Model . Title ) ] ;
787+ var titleField = Domain . Model . Types [ typeof ( PrefetchModel . Book ) ] . Fields [ nameof ( PrefetchModel . Book . Title ) ] ;
788+ var titleType = Domain . Model . Types [ typeof ( PrefetchModel . Title ) ] ;
787789 await foreach ( var book in prefetcher ) {
788790 var titleKey = book . GetReferenceKey ( titleField ) ;
789791 if ( titleKey != null ) {
@@ -800,14 +802,14 @@ public void NestedPrefetchWhenRootElementIsNullTest()
800802 RemoveAllBooks ( ) ;
801803 using ( var session = Domain . OpenSession ( ) ) {
802804 using ( var tx = session . OpenTransaction ( ) ) {
803- _ = new Model . Book { Title = new Model . Title { Text = "T0" } , Category = "1" } ;
805+ _ = new PrefetchModel . Book { Title = new PrefetchModel . Title { Text = "T0" } , Category = "1" } ;
804806 tx . Complete ( ) ;
805807 }
806808 using ( var tx = session . OpenTransaction ( ) ) {
807- var books = session . Query . All < Model . Book > ( ) . AsEnumerable ( ) . Concat ( EnumerableUtils . One < Model . Book > ( null ) )
809+ var books = session . Query . All < PrefetchModel . Book > ( ) . AsEnumerable ( ) . Concat ( EnumerableUtils . One < PrefetchModel . Book > ( null ) )
808810 . Prefetch ( b => b . Title . Book ) ;
809- var titleField = Domain . Model . Types [ typeof ( Model . Book ) ] . Fields [ "Title" ] ;
810- var titleType = Domain . Model . Types [ typeof ( Model . Title ) ] ;
811+ var titleField = Domain . Model . Types [ typeof ( PrefetchModel . Book ) ] . Fields [ "Title" ] ;
812+ var titleType = Domain . Model . Types [ typeof ( PrefetchModel . Title ) ] ;
811813 var count = 0 ;
812814 foreach ( var book in books ) {
813815 count ++ ;
@@ -829,15 +831,15 @@ public async Task NestedPrefetchWhenRootElementIsNullAsyncTest()
829831 RemoveAllBooks ( ) ;
830832 await using ( var session = await Domain . OpenSessionAsync ( ) ) {
831833 await using ( var tx = session . OpenTransaction ( ) ) {
832- _ = new Model . Book { Title = new Model . Title { Text = "T0" } , Category = "1" } ;
834+ _ = new PrefetchModel . Book { Title = new PrefetchModel . Title { Text = "T0" } , Category = "1" } ;
833835 tx . Complete ( ) ;
834836 }
835837
836838 await using ( var tx = session . OpenTransaction ( ) ) {
837- var books = session . Query . All < Model . Book > ( ) . AsEnumerable ( ) . Concat ( EnumerableUtils . One < Model . Book > ( null ) )
839+ var books = session . Query . All < PrefetchModel . Book > ( ) . AsEnumerable ( ) . Concat ( EnumerableUtils . One < PrefetchModel . Book > ( null ) )
838840 . Prefetch ( b => b . Title . Book ) . AsAsyncEnumerable ( ) ;
839- var titleField = Domain . Model . Types [ typeof ( Model . Book ) ] . Fields [ nameof ( Model . Book . Title ) ] ;
840- var titleType = Domain . Model . Types [ typeof ( Model . Title ) ] ;
841+ var titleField = Domain . Model . Types [ typeof ( PrefetchModel . Book ) ] . Fields [ nameof ( PrefetchModel . Book . Title ) ] ;
842+ var titleType = Domain . Model . Types [ typeof ( PrefetchModel . Title ) ] ;
841843 var count = 0 ;
842844 await foreach ( var book in books ) {
843845 count ++ ;
@@ -861,7 +863,7 @@ public void StructureFieldsPrefetchTest()
861863
862864 using ( var session = Domain . OpenSession ( ) )
863865 using ( var tx = session . OpenTransaction ( ) ) {
864- var containers = session . Query . Many < Model . OfferContainer > ( EnumerableUtils . One ( containerKey ) )
866+ var containers = session . Query . Many < PrefetchModel . OfferContainer > ( EnumerableUtils . One ( containerKey ) )
865867 . Prefetch ( oc => oc . RealOffer . Book )
866868 . Prefetch ( oc => oc . IntermediateOffer . RealOffer . BookShop ) ;
867869 foreach ( var key in containers ) {
@@ -879,7 +881,7 @@ public async Task StructureFieldsPrefetchAsyncTest()
879881
880882 await using ( var session = await Domain . OpenSessionAsync ( ) )
881883 await using ( var tx = session . OpenTransaction ( ) ) {
882- var containers = session . Query . Many < Model . OfferContainer > ( EnumerableUtils . One ( containerKey ) )
884+ var containers = session . Query . Many < PrefetchModel . OfferContainer > ( EnumerableUtils . One ( containerKey ) )
883885 . Prefetch ( oc => oc . RealOffer . Book )
884886 . Prefetch ( oc => oc . IntermediateOffer . RealOffer . BookShop ) . AsAsyncEnumerable ( ) ;
885887 await foreach ( var key in containers ) {
@@ -897,7 +899,7 @@ public void StructurePrefetchTest()
897899
898900 using ( var session = Domain . OpenSession ( ) )
899901 using ( var tx = session . OpenTransaction ( ) ) {
900- var containers = session . Query . Many < Model . OfferContainer > ( EnumerableUtils . One ( containerKey ) )
902+ var containers = session . Query . Many < PrefetchModel . OfferContainer > ( EnumerableUtils . One ( containerKey ) )
901903 . Prefetch ( oc => oc . IntermediateOffer ) ;
902904 foreach ( var key in containers ) {
903905 PrefetchTestHelper . AssertOnlySpecifiedColumnsAreLoaded ( containerKey , containerKey . TypeInfo , session ,
@@ -914,7 +916,7 @@ public async Task StructurePrefetchAsyncTest()
914916
915917 await using ( var session = await Domain . OpenSessionAsync ( ) )
916918 await using ( var tx = session . OpenTransaction ( ) ) {
917- var containers = session . Query . Many < Model . OfferContainer > ( EnumerableUtils . One ( containerKey ) )
919+ var containers = session . Query . Many < PrefetchModel . OfferContainer > ( EnumerableUtils . One ( containerKey ) )
918920 . Prefetch ( oc => oc . IntermediateOffer ) . AsAsyncEnumerable ( ) ;
919921 await foreach ( var key in containers ) {
920922 PrefetchTestHelper . AssertOnlySpecifiedColumnsAreLoaded ( containerKey , containerKey . TypeInfo , session ,
@@ -927,7 +929,7 @@ private void RemoveAllBooks()
927929 {
928930 using ( var session = Domain . OpenSession ( ) )
929931 using ( var tx = session . OpenTransaction ( ) ) {
930- foreach ( var book in session . Query . All < Model . Book > ( ) ) {
932+ foreach ( var book in session . Query . All < PrefetchModel . Book > ( ) ) {
931933 book . Remove ( ) ;
932934 }
933935 tx . Complete ( ) ;
0 commit comments