@@ -55,6 +55,7 @@ public TraversalHelper(
55
55
public RootNode < TEntity > CreateRootNode < TEntity > ( IEnumerable < TEntity > rootEntities ) where TEntity : class , IIdentifiable
56
56
{
57
57
_processedEntities = new Dictionary < DependentType , HashSet < IIdentifiable > > ( ) ;
58
+ RegisterRelationshipProxies ( typeof ( TEntity ) ) ;
58
59
var uniqueEntities = ProcessEntities ( rootEntities ) ;
59
60
var relationshipsToNextLayer = GetRelationships ( typeof ( TEntity ) ) ;
60
61
return new RootNode < TEntity > ( uniqueEntities , relationshipsToNextLayer ) ;
@@ -94,7 +95,7 @@ public EntityChildLayer CreateNextLayer(IEnumerable<IEntityNode> nodes)
94
95
return CreateRelationsipGroupInstance ( nextNodeType , proxy , grouped . Value , principals [ proxy ] ) ;
95
96
} ) . ToList ( ) ;
96
97
97
-
98
+ RegisterRelationshipProxies ( nextNodeType ) ;
98
99
return CreateNodeInstance ( nextNodeType , GetRelationships ( nextNodeType ) , relationshipsToPreviousLayer ) ;
99
100
} ) . ToList ( ) ;
100
101
@@ -118,6 +119,8 @@ Dictionary<DependentType, List<KeyValuePair<RelationshipProxy, List<IIdentifiabl
118
119
var principalsGrouped = new Dictionary < RelationshipProxy , List < IIdentifiable > > ( ) ;
119
120
var dependentsGrouped = new Dictionary < RelationshipProxy , List < IIdentifiable > > ( ) ;
120
121
122
+ principalNodes . ForEach ( n => RegisterRelationshipProxies ( n . EntityType ) ) ;
123
+
121
124
foreach ( var node in principalNodes )
122
125
{
123
126
var principalEntities = node . UniqueEntities ;
@@ -181,7 +184,11 @@ HashSet<TEntity> ProcessEntities<TEntity>(IEnumerable<TEntity> incomingEntities)
181
184
Type type = typeof ( TEntity ) ;
182
185
var newEntities = UniqueInTree ( incomingEntities , type ) ;
183
186
RegisterProcessedEntities ( newEntities , type ) ;
187
+ return newEntities ;
188
+ }
184
189
190
+ void RegisterRelationshipProxies ( DependentType type )
191
+ {
185
192
var contextEntity = _graph . GetContextEntity ( type ) ;
186
193
foreach ( RelationshipAttribute attr in contextEntity . Relationships )
187
194
{
@@ -194,7 +201,6 @@ HashSet<TEntity> ProcessEntities<TEntity>(IEnumerable<TEntity> incomingEntities)
194
201
RelationshipProxies [ attr ] = proxy ;
195
202
}
196
203
}
197
- return newEntities ;
198
204
}
199
205
200
206
0 commit comments