File tree Expand file tree Collapse file tree
Orm/Xtensive.Orm/Orm/Model Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -329,23 +329,33 @@ public override void UpdateState()
329329 if ( ! IsPrimary )
330330 return ;
331331
332- var system = new List < int > ( ) ;
332+ var keyColumnsCount = keyColumns . Count ;
333+ var system = new int [ keyColumnsCount + 2 ] ;
333334 var lazy = new List < int > ( ) ;
334- var regular = new List < int > ( ) ;
335+ var regular = new int [ Columns . Count - keyColumnsCount ] ;
335336
336- for ( int i = 0 , count = Columns . Count ; i < count ; i ++ ) {
337+ var regularIndex = 0 ;
338+ var systemIndex = 0 ;
339+
340+ for ( var i = 0 ; i < Columns . Count ; i ++ ) {
337341 var item = Columns [ i ] ;
338- if ( item . IsPrimaryKey || item . IsSystem )
339- system . Add ( i ) ;
342+ if ( item . IsPrimaryKey || item . IsSystem ) {
343+ system [ systemIndex ++ ] = i ;
344+ }
340345 else {
341346 if ( item . IsLazyLoad )
342347 lazy . Add ( i ) ;
343- else
344- regular . Add ( i ) ;
348+ else {
349+ regular [ regularIndex ++ ] = i ;
350+ //regularIndex++;
351+ }
345352 }
346353 }
347354
348- ColumnIndexMap = new ColumnIndexMap ( system , regular , lazy ) ;
355+ ColumnIndexMap = new ColumnIndexMap (
356+ ( systemIndex == system . Length ) ? system : new ArraySegment < int > ( system , 0 , systemIndex ) ,
357+ ( regularIndex == 0 ) ? Array . Empty < int > ( ) : new ArraySegment < int > ( regular , 0 , regularIndex ) ,
358+ ( lazy . Count == 0 ) ? Array . Empty < int > ( ) : lazy ) ;
349359 }
350360
351361 /// <inheritdoc/>
You can’t perform that action at this time.
0 commit comments