Skip to content

Commit 5c25e73

Browse files
committed
MaterializationContext: improved way to build typeColumnMap
1 parent b1b1c29 commit 5c25e73

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

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

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -74,17 +74,21 @@ public TypeMapping GetTypeMapping(int entityIndex, TypeInfo approximateType, int
7474
var keyInfo = type.Key;
7575
var descriptor = type.TupleDescriptor;
7676

77-
var typeColumnMap = columns.ToArray();
78-
if (approximateType.IsInterface)
77+
var typeColumnMap = new Pair<int>[columns.Length];
78+
if (approximateType.IsInterface) {
7979
// fixup target index
8080
for (int i = 0; i < columns.Length; i++) {
81-
var pair = typeColumnMap[i];
81+
var pair = columns[i];
8282
var approxTargetIndex = pair.First;
8383
var interfaceField = approximateType.Columns[approxTargetIndex].Field;
8484
var field = type.FieldMap[interfaceField];
8585
var targetIndex = field.MappingInfo.Offset;
8686
typeColumnMap[i] = new Pair<int>(targetIndex, pair.Second);
8787
}
88+
}
89+
else {
90+
Array.Copy(columns, typeColumnMap, columns.Length);
91+
}
8892

8993
int[] allIndexes = MaterializationHelper.CreateSingleSourceMap(descriptor.Count, typeColumnMap);
9094
int[] keyIndexes = allIndexes.Take(keyInfo.TupleDescriptor.Count).ToArray();

0 commit comments

Comments
 (0)