Skip to content

Commit cbf2f42

Browse files
committed
Optimize MaterializationContext
1 parent f2ab772 commit cbf2f42

File tree

2 files changed

+10
-28
lines changed

2 files changed

+10
-28
lines changed

Orm/Xtensive.Orm/Orm/Linq/Materialization/ItemMaterializationContext.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
// This code is distributed under MIT license terms.
33
// See the License.txt file in the project root for more information.
44

5-
using System;
6-
using System.Collections.Generic;
75
using System.Reflection;
86
using Xtensive.Core;
97
using Xtensive.Orm.Internals;
@@ -14,21 +12,21 @@
1412

1513
namespace Xtensive.Orm.Linq.Materialization
1614
{
17-
internal sealed class ItemMaterializationContext
15+
internal readonly struct ItemMaterializationContext
1816
{
1917
public static readonly MethodInfo IsMaterializedMethodInfo = WellKnownOrmTypes.ItemMaterializationContext.GetMethod(nameof(IsMaterialized));
2018
public static readonly MethodInfo GetEntityMethodInfo = WellKnownOrmTypes.ItemMaterializationContext.GetMethod(nameof(GetEntity));
2119
public static readonly MethodInfo MaterializeMethodInfo = WellKnownOrmTypes.ItemMaterializationContext.GetMethod(nameof(Materialize));
2220
public static readonly System.Reflection.FieldInfo SessionFieldInfo = WellKnownOrmTypes.ItemMaterializationContext.GetField(nameof(Session));
2321

24-
public readonly Session Session;
2522
public readonly MaterializationContext MaterializationContext;
2623

27-
private readonly TypeIdRegistry typeIdRegistry;
2824
private readonly Entity[] entities;
29-
3025
public ParameterContext ParameterContext { get; }
3126

27+
public Session Session => MaterializationContext.Session;
28+
private TypeIdRegistry typeIdRegistry => Session.StorageNode.TypeIdRegistry;
29+
3230
public bool IsMaterialized(int index) => entities[index] != null;
3331

3432
public Entity GetEntity(int index) => entities[index];
@@ -75,9 +73,7 @@ public ItemMaterializationContext(MaterializationContext materializationContext,
7573
{
7674
ParameterContext = parameterContext;
7775
MaterializationContext = materializationContext;
78-
Session = materializationContext.Session;
7976

80-
typeIdRegistry = Session.StorageNode.TypeIdRegistry;
8177
entities = new Entity[materializationContext.EntitiesInRow];
8278
}
8379
}

Orm/Xtensive.Orm/Orm/Linq/Materialization/MaterializationContext.cs

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,6 @@
44
// Created by: Alexis Kochetov
55
// Created: 2009.05.29
66

7-
using System;
8-
using System.Collections.Generic;
9-
using System.Linq;
10-
using Xtensive.Core;
117
using Xtensive.Tuples.Transform;
128
using Xtensive.Orm.Internals;
139
using Xtensive.Orm.Model;
@@ -31,27 +27,22 @@ private struct EntityMappingCache
3127
/// <summary>
3228
/// Gets model of current <see cref="DomainModel">domain model.</see>
3329
/// </summary>
34-
public DomainModel Model { get; private set; }
30+
public DomainModel Model => Session.Domain.Model;
3531

3632
/// <summary>
3733
/// Gets the session in which materialization is executing.
3834
/// </summary>
39-
public Session Session { get; private set; }
35+
public Session Session { get; }
4036

4137
/// <summary>
4238
/// Gets count of entities in query row.
4339
/// </summary>
44-
public int EntitiesInRow { get; private set; }
40+
public int EntitiesInRow => entityMappings.Length;
4541

4642
/// <summary>
4743
/// Gets <see cref="StorageNode">node</see> specific type identifiers registry of current node.
4844
/// </summary>
49-
public TypeIdRegistry TypeIdRegistry
50-
{
51-
get {
52-
return Session.StorageNode.TypeIdRegistry;
53-
}
54-
}
45+
public TypeIdRegistry TypeIdRegistry => Session.StorageNode.TypeIdRegistry;
5546

5647
/// <summary>
5748
/// Gets or sets queue of materialization actions.
@@ -109,15 +100,10 @@ private int ResolveTypeToNodeSpecificTypeIdentifier(TypeInfo typeInfo)
109100
public MaterializationContext(Session session, int entityCount)
110101
{
111102
Session = session;
112-
Model = session.Domain.Model;
113-
EntitiesInRow = entityCount;
114103

115104
entityMappings = new EntityMappingCache[entityCount];
116-
117105
for (int i = 0; i < entityMappings.Length; i++)
118-
entityMappings[i] = new EntityMappingCache {
119-
Items = new Dictionary<int, TypeMapping>()
120-
};
106+
entityMappings[i] = new() { Items = new Dictionary<int, TypeMapping>() };
121107
}
122108
}
123-
}
109+
}

0 commit comments

Comments
 (0)