Skip to content

Commit 970aa4a

Browse files
committed
Make ExecutableProviderGenerator static readonly Func
1 parent 9b216f9 commit 970aa4a

1 file changed

Lines changed: 7 additions & 11 deletions

File tree

Orm/Xtensive.Orm/Orm/Entity.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)