@@ -66,6 +66,12 @@ public abstract class Entity : Persistent,
6666 ISerializable ,
6767 IDeserializationCallback
6868 {
69+ private static readonly Func < ( TypeInfo typeInfo , LockMode lockMode , LockBehavior lockBehavior ) , Session , ExecutableProvider > ExecutableProviderGenerator = ( ( TypeInfo typeInfo , LockMode lockMode , LockBehavior lockBehavior ) t , Session session ) =>
70+ session . Compile ( t . typeInfo . Indexes . PrimaryIndex . GetQuery ( )
71+ . Seek ( context => context . GetValue ( keyParameter ) )
72+ . Lock ( ( ) => t . lockMode , ( ) => t . lockBehavior )
73+ . Select ( Array . Empty < int > ( ) ) ) ;
74+
6975 private static readonly Parameter < Tuple > keyParameter = new Parameter < Tuple > ( WellKnown . KeyFieldName ) ;
7076 private readonly bool changeVersionOnSetAttempt ;
7177 private EntityState state ;
@@ -260,22 +266,12 @@ public void RemoveLater()
260266 RemoveLaterInternal ( EntityRemoveReason . User ) ;
261267 }
262268
263- private ExecutableProvider ExecutableProviderGenerator ( ( TypeInfo typeInfo , LockMode lockMode , LockBehavior lockBehavior ) t )
264- {
265- var index = t . typeInfo . Indexes . PrimaryIndex ;
266- var query = index . GetQuery ( )
267- . Seek ( context => context . GetValue ( keyParameter ) )
268- . Lock ( ( ) => t . lockMode , ( ) => t . lockBehavior )
269- . Select ( Array . Empty < int > ( ) ) ;
270- return Session . Compile ( query ) ;
271- }
272-
273269 /// <inheritdoc/>
274270 public void Lock ( LockMode lockMode , LockBehavior lockBehavior )
275271 {
276272 var parameterContext = new ParameterContext ( ) ;
277273 parameterContext . SetValue ( keyParameter , Key . Value ) ;
278- var source = Session . StorageNode . InternalExecutableProviderCache . GetOrAdd ( ( TypeInfo , lockMode , lockBehavior ) , ExecutableProviderGenerator ) ;
274+ var source = Session . StorageNode . InternalExecutableProviderCache . GetOrAdd ( ( TypeInfo , lockMode , lockBehavior ) , ExecutableProviderGenerator , Session ) ;
279275 using var recordSetReader = source . GetRecordSetReader ( Session , parameterContext ) ;
280276 recordSetReader . MoveNext ( ) ;
281277 }
0 commit comments