5
5
using System ;
6
6
using System . Collections ;
7
7
using System . Collections . Generic ;
8
+ using JetBrains . Annotations ;
8
9
using Xtensive . Orm . Linq . Materialization ;
9
10
10
11
namespace Xtensive . Orm
@@ -32,10 +33,10 @@ public EnumerableReader(IEnumerable<TItem> items)
32
33
}
33
34
34
35
private readonly StateLifetimeToken lifetimeToken ;
36
+ private readonly IMaterializingReader < TItem > reader ;
35
37
36
-
37
- // DO NOT ENUMERATE this reader anywhere outside this class
38
- internal IMaterializingReader < TItem > Reader { get ; }
38
+ [ CanBeNull ]
39
+ internal Session Session => reader . Session ;
39
40
40
41
/// <inheritdoc/>
41
42
IEnumerator IEnumerable . GetEnumerator ( ) => GetEnumerator ( ) ;
@@ -44,7 +45,7 @@ public EnumerableReader(IEnumerable<TItem> items)
44
45
public IEnumerator < TItem > GetEnumerator ( )
45
46
{
46
47
EnsureResultsAlive ( ) ;
47
- return Reader . AsEnumerator ( ) ;
48
+ return reader . AsEnumerator ( ) ;
48
49
}
49
50
50
51
/// <summary>
@@ -53,7 +54,7 @@ public IEnumerator<TItem> GetEnumerator()
53
54
public async IAsyncEnumerable < TItem > AsAsyncEnumerable ( )
54
55
{
55
56
EnsureResultsAlive ( ) ;
56
- var enumerator = Reader . AsAsyncEnumerator ( ) ;
57
+ var enumerator = reader . AsAsyncEnumerator ( ) ;
57
58
while ( await enumerator . MoveNextAsync ( ) . ConfigureAwait ( false ) ) {
58
59
yield return enumerator . Current ;
59
60
}
@@ -68,14 +69,14 @@ private void EnsureResultsAlive()
68
69
69
70
internal QueryResult ( IMaterializingReader < TItem > reader , StateLifetimeToken lifetimeToken )
70
71
{
71
- this . Reader = reader ;
72
+ this . reader = reader ;
72
73
this . lifetimeToken = lifetimeToken ;
73
74
}
74
75
75
76
internal QueryResult ( IEnumerable < TItem > items )
76
77
{
77
- Reader = new EnumerableReader ( items ) ;
78
- this . lifetimeToken = default ;
78
+ reader = new EnumerableReader ( items ) ;
79
+ lifetimeToken = default ;
79
80
}
80
81
}
81
82
}
0 commit comments