Skip to content

Commit 832fab5

Browse files
committed
QueryResult: Pass Session from IMaterializingReader field
1 parent 2bdc5e0 commit 832fab5

File tree

2 files changed

+10
-9
lines changed

2 files changed

+10
-9
lines changed

Orm/Xtensive.Orm/Orm/PrefetchExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ public static PrefetchQuery<TElement> Prefetch<TElement, TFieldValue>(
6464
this QueryResult<TElement> source,
6565
Expression<Func<TElement, TFieldValue>> expression)
6666
{
67-
var session = source.Reader.Session;
67+
var session = source.Session;
6868
if (session != null) {
6969
return new PrefetchQuery<TElement>(session, source).RegisterPath(expression);
7070
}

Orm/Xtensive.Orm/Orm/QueryResult.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System;
66
using System.Collections;
77
using System.Collections.Generic;
8+
using JetBrains.Annotations;
89
using Xtensive.Orm.Linq.Materialization;
910

1011
namespace Xtensive.Orm
@@ -32,10 +33,10 @@ public EnumerableReader(IEnumerable<TItem> items)
3233
}
3334

3435
private readonly StateLifetimeToken lifetimeToken;
36+
private readonly IMaterializingReader<TItem> reader;
3537

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;
3940

4041
/// <inheritdoc/>
4142
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
@@ -44,7 +45,7 @@ public EnumerableReader(IEnumerable<TItem> items)
4445
public IEnumerator<TItem> GetEnumerator()
4546
{
4647
EnsureResultsAlive();
47-
return Reader.AsEnumerator();
48+
return reader.AsEnumerator();
4849
}
4950

5051
/// <summary>
@@ -53,7 +54,7 @@ public IEnumerator<TItem> GetEnumerator()
5354
public async IAsyncEnumerable<TItem> AsAsyncEnumerable()
5455
{
5556
EnsureResultsAlive();
56-
var enumerator = Reader.AsAsyncEnumerator();
57+
var enumerator = reader.AsAsyncEnumerator();
5758
while (await enumerator.MoveNextAsync().ConfigureAwait(false)) {
5859
yield return enumerator.Current;
5960
}
@@ -68,14 +69,14 @@ private void EnsureResultsAlive()
6869

6970
internal QueryResult(IMaterializingReader<TItem> reader, StateLifetimeToken lifetimeToken)
7071
{
71-
this.Reader = reader;
72+
this.reader = reader;
7273
this.lifetimeToken = lifetimeToken;
7374
}
7475

7576
internal QueryResult(IEnumerable<TItem> items)
7677
{
77-
Reader = new EnumerableReader(items);
78-
this.lifetimeToken = default;
78+
reader = new EnumerableReader(items);
79+
lifetimeToken = default;
7980
}
8081
}
8182
}

0 commit comments

Comments
 (0)