VI.DB/VI.DB.Entities/LockedEntityLogic.cs
Decompiler Source FileVI.DB.LockedEntityLogicDecompiled Source
Interpretation
- Decompiled source file. Use method/event registrations and call-site extraction to connect back to DialogMethod, QBMEvent, and API layers.
Relations
- Method registration: SetLockStateForDisplay at line 493
Typed Edges
- No typed edges extracted for this source.
References
- No direct source references extracted.
Referenced By
- No direct source references extracted.
C# source-derived context
Generated by pattern extraction from the decompiled C# source and decompile index. This is factual source evidence, not inferred behavior.
references DB/Dialog objects
Summary: classes LockedEntityLogic, _003C_003Ec__DisplayClass5_0; methods _003COnSavedAsync_003Eb__0, MoveNext, SetStateMachine, OnLoadedAsync, OnSavingAsync, OnSavedAsync; references QBMLock; markers references DB/Dialog objects
Classes
LockedEntityLogic _003C_003Ec__DisplayClass5_0Methods
DB/Dialog object references
OIM key/entity markers
ObjectKeyOfRowAPI/entity calls
CreateAsync MetaData From GetInitialDataRegistrations / handlers
None extracted.
Complete Source
1using System;2using System.Collections;3using System.Collections.Generic;4using System.Diagnostics;5using System.Linq;6using System.Runtime.CompilerServices;7using System.Runtime.InteropServices;8using System.Threading;9using System.Threading.Tasks;10using NLog;11using VI.Base;1213namespace VI.DB.Entities;1415internal class LockedEntityLogic : StateLessEntityLogic16{17 [CompilerGenerated]18 private sealed class _003C_003Ec__DisplayClass5_019 {20 public string keyString;2122 internal ExpressionClause _003COnSavedAsync_003Eb__0(IExpressionContext t)23 {24 return t.Column("ObjectKeyOfRow") == keyString;25 }26 }2728 [StructLayout((LayoutKind)3)]29 [CompilerGenerated]30 private struct _003COnLoadedAsync_003Ed__3 : IAsyncStateMachine31 {32 public int _003C_003E1__state;3334 public AsyncTaskMethodBuilder<Diff> _003C_003Et__builder;3536 public IEntity entity;3738 public LogicReadOnlyParameters parameters;3940 public CancellationToken cancellationToken;4142 public LockedEntityLogic _003C_003E4__this;4344 private Logger _003Clog_003E5__2;4546 private LogSessionId _003Cid_003E5__3;4748 private ConfiguredTaskAwaiter<DbObjectKey> _003C_003Eu__1;4950 private ConfiguredTaskAwaiter<string[]> _003C_003Eu__2;5152 private void MoveNext()53 {54 //IL_00c6: Unknown result type (might be due to invalid IL or missing references)55 //IL_00cb: Unknown result type (might be due to invalid IL or missing references)56 //IL_00d3: Unknown result type (might be due to invalid IL or missing references)57 //IL_00f7: Unknown result type (might be due to invalid IL or missing references)58 //IL_0102: Unknown result type (might be due to invalid IL or missing references)59 //IL_0107: Unknown result type (might be due to invalid IL or missing references)60 //IL_010b: Unknown result type (might be due to invalid IL or missing references)61 //IL_0110: Unknown result type (might be due to invalid IL or missing references)62 //IL_0140: Unknown result type (might be due to invalid IL or missing references)63 //IL_0145: Unknown result type (might be due to invalid IL or missing references)64 //IL_014d: Unknown result type (might be due to invalid IL or missing references)65 //IL_0125: Unknown result type (might be due to invalid IL or missing references)66 //IL_0127: Unknown result type (might be due to invalid IL or missing references)67 //IL_007d: Unknown result type (might be due to invalid IL or missing references)68 //IL_0088: Unknown result type (might be due to invalid IL or missing references)69 //IL_008d: Unknown result type (might be due to invalid IL or missing references)70 //IL_0091: Unknown result type (might be due to invalid IL or missing references)71 //IL_0096: Unknown result type (might be due to invalid IL or missing references)72 //IL_00ab: Unknown result type (might be due to invalid IL or missing references)73 //IL_00ad: Unknown result type (might be due to invalid IL or missing references)74 int num = _003C_003E1__state;75 LockedEntityLogic CS_0024_003C_003E8__locals1 = _003C_003E4__this;76 Diff result;77 try78 {79 ConfiguredTaskAwaiter<DbObjectKey> val;80 if (num == 0)81 {82 val = _003C_003Eu__1;83 _003C_003Eu__1 = default(ConfiguredTaskAwaiter<DbObjectKey>);84 num = (_003C_003E1__state = -1);85 goto IL_00e2;86 }87 ConfiguredTaskAwaiter<string[]> val2;88 if (num == 1)89 {90 val2 = _003C_003Eu__2;91 _003C_003Eu__2 = default(ConfiguredTaskAwaiter<string[]>);92 num = (_003C_003E1__state = -1);93 goto IL_015c;94 }95 if (entity.State.HasFlagFast(EntityState.Locked))96 {97 _003Clog_003E5__2 = LogManager.GetLogger("ObjectLog");98 _003Cid_003E5__3 = new LogSessionId(parameters.Session.Id, useMultiLanguage: false);99 val = DbObjectKey.CreateAsync(parameters.Session.MetaData(), entity, cancellationToken).ConfigureAwait(false).GetAwaiter();100 if (!val.IsCompleted)101 {102 num = (_003C_003E1__state = 0);103 _003C_003Eu__1 = val;104 _003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<DbObjectKey>, _003COnLoadedAsync_003Ed__3>(ref val, ref this);105 return;106 }107 goto IL_00e2;108 }109 result = Diff.Empty;110 goto end_IL_000e;111 IL_015c:112 string[] result2 = val2.GetResult();113 NLogExtensions.Debug(_003Clog_003E5__2, _003Cid_003E5__3, "Lock entity columns: {0}", string.Join(",", result2));114 result = new Diff(Enumerable.SelectMany<string, DiffOperation>((System.Collections.Generic.IEnumerable<string>)result2, (Func<string, System.Collections.Generic.IEnumerable<DiffOperation>>)([CompilerGenerated] (string c) => new DiffOperation[2]115 {116 new DiffOperation117 {118 Name = c,119 Type = DiffOperationType.CanEdit,120 Value = false121 },122 new DiffOperation123 {124 Name = c,125 Type = DiffOperationType.LogicDisallowCanEdit,126 Value = "-" + CS_0024_003C_003E8__locals1.Name127 }128 })));129 goto end_IL_000e;130 IL_00e2:131 DbObjectKey result3 = val.GetResult();132 val2 = EntityLock.GetLockedColumnsAsync(parameters.Session, result3, cancellationToken).ConfigureAwait(false).GetAwaiter();133 if (!val2.IsCompleted)134 {135 num = (_003C_003E1__state = 1);136 _003C_003Eu__2 = val2;137 _003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<string[]>, _003COnLoadedAsync_003Ed__3>(ref val2, ref this);138 return;139 }140 goto IL_015c;141 end_IL_000e:;142 }143 catch (System.Exception exception)144 {145 _003C_003E1__state = -2;146 _003Clog_003E5__2 = null;147 _003Cid_003E5__3 = null;148 _003C_003Et__builder.SetException(exception);149 return;150 }151 _003C_003E1__state = -2;152 _003Clog_003E5__2 = null;153 _003Cid_003E5__3 = null;154 _003C_003Et__builder.SetResult(result);155 }156157 [DebuggerHidden]158 private void SetStateMachine(IAsyncStateMachine stateMachine)159 {160 _003C_003Et__builder.SetStateMachine(stateMachine);161 }162 }163164 [StructLayout((LayoutKind)3)]165 [CompilerGenerated]166 private struct _003COnSavedAsync_003Ed__5 : IAsyncStateMachine167 {168 public int _003C_003E1__state;169170 public AsyncTaskMethodBuilder _003C_003Et__builder;171172 public IEntity entity;173174 public LogicReadWriteParameters parameters;175176 public CancellationToken cancellationToken;177178 private _003C_003Ec__DisplayClass5_0 _003C_003E8__1;179180 public LockedEntityLogic _003C_003E4__this;181182 private Logger _003Clog_003E5__2;183184 private LogSessionId _003Cid_003E5__3;185186 private ConfiguredTaskAwaiter<DbObjectKey> _003C_003Eu__1;187188 private ConfiguredTaskAwaiter<IEntityCollection> _003C_003Eu__2;189190 private System.Collections.Generic.IEnumerator<IEntity> _003C_003E7__wrap3;191192 private ConfiguredTaskAwaiter _003C_003Eu__3;193194 private void MoveNext()195 {196 //IL_00d4: Unknown result type (might be due to invalid IL or missing references)197 //IL_00d9: Unknown result type (might be due to invalid IL or missing references)198 //IL_00e1: Unknown result type (might be due to invalid IL or missing references)199 //IL_01a5: Unknown result type (might be due to invalid IL or missing references)200 //IL_01aa: Unknown result type (might be due to invalid IL or missing references)201 //IL_01b2: Unknown result type (might be due to invalid IL or missing references)202 //IL_02f2: Unknown result type (might be due to invalid IL or missing references)203 //IL_02f7: Unknown result type (might be due to invalid IL or missing references)204 //IL_02ff: Unknown result type (might be due to invalid IL or missing references)205 //IL_015c: Unknown result type (might be due to invalid IL or missing references)206 //IL_0167: Unknown result type (might be due to invalid IL or missing references)207 //IL_016c: Unknown result type (might be due to invalid IL or missing references)208 //IL_0170: Unknown result type (might be due to invalid IL or missing references)209 //IL_0175: Unknown result type (might be due to invalid IL or missing references)210 //IL_008b: Unknown result type (might be due to invalid IL or missing references)211 //IL_0096: Unknown result type (might be due to invalid IL or missing references)212 //IL_009b: Unknown result type (might be due to invalid IL or missing references)213 //IL_009f: Unknown result type (might be due to invalid IL or missing references)214 //IL_00a4: Unknown result type (might be due to invalid IL or missing references)215 //IL_018a: Unknown result type (might be due to invalid IL or missing references)216 //IL_018c: Unknown result type (might be due to invalid IL or missing references)217 //IL_024a: Unknown result type (might be due to invalid IL or missing references)218 //IL_024f: Unknown result type (might be due to invalid IL or missing references)219 //IL_0257: Unknown result type (might be due to invalid IL or missing references)220 //IL_00b9: Unknown result type (might be due to invalid IL or missing references)221 //IL_00bb: Unknown result type (might be due to invalid IL or missing references)222 //IL_0201: Unknown result type (might be due to invalid IL or missing references)223 //IL_020c: Unknown result type (might be due to invalid IL or missing references)224 //IL_0211: Unknown result type (might be due to invalid IL or missing references)225 //IL_0215: Unknown result type (might be due to invalid IL or missing references)226 //IL_021a: Unknown result type (might be due to invalid IL or missing references)227 //IL_022f: Unknown result type (might be due to invalid IL or missing references)228 //IL_0231: Unknown result type (might be due to invalid IL or missing references)229 //IL_02ac: Unknown result type (might be due to invalid IL or missing references)230 //IL_02b7: Unknown result type (might be due to invalid IL or missing references)231 //IL_02bc: Unknown result type (might be due to invalid IL or missing references)232 //IL_02c0: Unknown result type (might be due to invalid IL or missing references)233 //IL_02c5: Unknown result type (might be due to invalid IL or missing references)234 //IL_02da: Unknown result type (might be due to invalid IL or missing references)235 //IL_02dc: Unknown result type (might be due to invalid IL or missing references)236 int num = _003C_003E1__state;237 LockedEntityLogic lockedEntityLogic = _003C_003E4__this;238 try239 {240 ConfiguredTaskAwaiter<DbObjectKey> val3;241 ConfiguredTaskAwaiter<IEntityCollection> val2;242 ConfiguredTaskAwaiter val;243 IEntityCollection result;244 DbObjectKey result2;245 switch (num)246 {247 default:248 _003C_003E8__1 = new _003C_003Ec__DisplayClass5_0();249 if (entity.State.HasFlagFast(EntityState.ToDeletePhysical | EntityState.Locked))250 {251 _003Clog_003E5__2 = LogManager.GetLogger("ObjectLog");252 _003Cid_003E5__3 = new LogSessionId(parameters.Session.Id, useMultiLanguage: false);253 val3 = DbObjectKey.CreateAsync(parameters.Session.MetaData(), entity, cancellationToken).ConfigureAwait(false).GetAwaiter();254 if (!val3.IsCompleted)255 {256 num = (_003C_003E1__state = 0);257 _003C_003Eu__1 = val3;258 ((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<DbObjectKey>, _003COnSavedAsync_003Ed__5>(ref val3, ref this);259 return;260 }261 goto IL_00f0;262 }263 goto end_IL_000e;264 case 0:265 val3 = _003C_003Eu__1;266 _003C_003Eu__1 = default(ConfiguredTaskAwaiter<DbObjectKey>);267 num = (_003C_003E1__state = -1);268 goto IL_00f0;269 case 1:270 val2 = _003C_003Eu__2;271 _003C_003Eu__2 = default(ConfiguredTaskAwaiter<IEntityCollection>);272 num = (_003C_003E1__state = -1);273 goto IL_01c1;274 case 2:275 {276 ConfiguredTaskAwaitable val4;277 try278 {279 if (num != 2)280 {281 goto IL_026d;282 }283 val = _003C_003Eu__3;284 _003C_003Eu__3 = default(ConfiguredTaskAwaiter);285 num = (_003C_003E1__state = -1);286 goto IL_0266;287 IL_0266:288 ((ConfiguredTaskAwaiter)(ref val)).GetResult();289 goto IL_026d;290 IL_026d:291 if (((System.Collections.IEnumerator)_003C_003E7__wrap3).MoveNext())292 {293 IEntity current = _003C_003E7__wrap3.Current;294 current.MarkForDeletion();295 val4 = parameters.UnitOfWork.PutAsync(current, cancellationToken).ConfigureAwait(false);296 val = ((ConfiguredTaskAwaitable)(ref val4)).GetAwaiter();297 if (!((ConfiguredTaskAwaiter)(ref val)).IsCompleted)298 {299 num = (_003C_003E1__state = 2);300 _003C_003Eu__3 = val;301 ((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003COnSavedAsync_003Ed__5>(ref val, ref this);302 return;303 }304 goto IL_0266;305 }306 }307 finally308 {309 if (num < 0 && _003C_003E7__wrap3 != null)310 {311 ((System.IDisposable)_003C_003E7__wrap3).Dispose();312 }313 }314 _003C_003E7__wrap3 = null;315 val4 = ((StateLessEntityLogic)lockedEntityLogic).OnSavedAsync(entity, parameters, cancellationToken).ConfigureAwait(false);316 val = ((ConfiguredTaskAwaitable)(ref val4)).GetAwaiter();317 if (!((ConfiguredTaskAwaiter)(ref val)).IsCompleted)318 {319 num = (_003C_003E1__state = 3);320 _003C_003Eu__3 = val;321 ((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003COnSavedAsync_003Ed__5>(ref val, ref this);322 return;323 }324 break;325 }326 case 3:327 {328 val = _003C_003Eu__3;329 _003C_003Eu__3 = default(ConfiguredTaskAwaiter);330 num = (_003C_003E1__state = -1);331 break;332 }333 IL_01c1:334 result = val2.GetResult();335 _003C_003E7__wrap3 = ((System.Collections.Generic.IEnumerable<IEntity>)result).GetEnumerator();336 goto case 2;337 IL_00f0:338 result2 = val3.GetResult();339 _003C_003E8__1.keyString = result2.ToXmlString();340 NLogExtensions.Debug(_003Clog_003E5__2, _003Cid_003E5__3, "Removing lock information for : {0}", _003C_003E8__1.keyString);341 val2 = parameters.EntitySource.GetCollectionAsync((from t in Query.From("QBMLock")342 where t.Column("ObjectKeyOfRow") == _003C_003E8__1.keyString343 select t).SelectNonLobs(), EntityCollectionLoadType.Bulk, cancellationToken).ConfigureAwait(false).GetAwaiter();344 if (!val2.IsCompleted)345 {346 num = (_003C_003E1__state = 1);347 _003C_003Eu__2 = val2;348 ((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<IEntityCollection>, _003COnSavedAsync_003Ed__5>(ref val2, ref this);349 return;350 }351 goto IL_01c1;352 }353 ((ConfiguredTaskAwaiter)(ref val)).GetResult();354 end_IL_000e:;355 }356 catch (System.Exception exception)357 {358 _003C_003E1__state = -2;359 _003C_003E8__1 = null;360 _003Clog_003E5__2 = null;361 _003Cid_003E5__3 = null;362 ((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetException(exception);363 return;364 }365 _003C_003E1__state = -2;366 _003C_003E8__1 = null;367 _003Clog_003E5__2 = null;368 _003Cid_003E5__3 = null;369 ((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetResult();370 }371372 [DebuggerHidden]373 private void SetStateMachine(IAsyncStateMachine stateMachine)374 {375 ((AsyncTaskMethodBuilder)(ref _003C_003Et__builder)).SetStateMachine(stateMachine);376 }377 }378379 [StructLayout((LayoutKind)3)]380 [CompilerGenerated]381 private struct _003COnSavingAsync_003Ed__4 : IAsyncStateMachine382 {383 public int _003C_003E1__state;384385 public AsyncTaskMethodBuilder<Diff> _003C_003Et__builder;386387 public IEntity entity;388389 public LockedEntityLogic _003C_003E4__this;390391 public LogicReadWriteParameters parameters;392393 public CancellationToken cancellationToken;394395 private ConfiguredTaskAwaiter _003C_003Eu__1;396397 private ConfiguredTaskAwaiter<Diff> _003C_003Eu__2;398399 private void MoveNext()400 {401 //IL_0099: Unknown result type (might be due to invalid IL or missing references)402 //IL_009e: Unknown result type (might be due to invalid IL or missing references)403 //IL_00a5: Unknown result type (might be due to invalid IL or missing references)404 //IL_010f: Unknown result type (might be due to invalid IL or missing references)405 //IL_0114: Unknown result type (might be due to invalid IL or missing references)406 //IL_011c: Unknown result type (might be due to invalid IL or missing references)407 //IL_00c9: Unknown result type (might be due to invalid IL or missing references)408 //IL_00d4: Unknown result type (might be due to invalid IL or missing references)409 //IL_00d9: Unknown result type (might be due to invalid IL or missing references)410 //IL_00dd: Unknown result type (might be due to invalid IL or missing references)411 //IL_00e2: Unknown result type (might be due to invalid IL or missing references)412 //IL_00f7: Unknown result type (might be due to invalid IL or missing references)413 //IL_00f9: Unknown result type (might be due to invalid IL or missing references)414 //IL_0052: Unknown result type (might be due to invalid IL or missing references)415 //IL_005d: Unknown result type (might be due to invalid IL or missing references)416 //IL_0062: Unknown result type (might be due to invalid IL or missing references)417 //IL_0066: Unknown result type (might be due to invalid IL or missing references)418 //IL_006b: Unknown result type (might be due to invalid IL or missing references)419 //IL_007f: Unknown result type (might be due to invalid IL or missing references)420 //IL_0080: Unknown result type (might be due to invalid IL or missing references)421 int num = _003C_003E1__state;422 LockedEntityLogic lockedEntityLogic = _003C_003E4__this;423 Diff result;424 try425 {426 ConfiguredTaskAwaiter<Diff> val;427 ConfiguredTaskAwaiter val3;428 if (num != 0)429 {430 if (num == 1)431 {432 val = _003C_003Eu__2;433 _003C_003Eu__2 = default(ConfiguredTaskAwaiter<Diff>);434 num = (_003C_003E1__state = -1);435 goto IL_012b;436 }437 if (!entity.State.HasFlagFast(EntityState.Locked) || lockedEntityLogic._GetOriginalXMarkedForDeletion(entity).HasFlagFast(XMarkedForDeletion.Locked))438 {439 goto IL_00bb;440 }441 ConfiguredTaskAwaitable val2 = EntityLock.CheckAllowedAsync(parameters.Session, cancellationToken).ConfigureAwait(false);442 val3 = ((ConfiguredTaskAwaitable)(ref val2)).GetAwaiter();443 if (!((ConfiguredTaskAwaiter)(ref val3)).IsCompleted)444 {445 num = (_003C_003E1__state = 0);446 _003C_003Eu__1 = val3;447 _003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter, _003COnSavingAsync_003Ed__4>(ref val3, ref this);448 return;449 }450 }451 else452 {453 val3 = _003C_003Eu__1;454 _003C_003Eu__1 = default(ConfiguredTaskAwaiter);455 num = (_003C_003E1__state = -1);456 }457 ((ConfiguredTaskAwaiter)(ref val3)).GetResult();458 goto IL_00bb;459 IL_00bb:460 val = ((EntityLogicBase)lockedEntityLogic).OnSavingAsync(entity, parameters, cancellationToken).ConfigureAwait(false).GetAwaiter();461 if (!val.IsCompleted)462 {463 num = (_003C_003E1__state = 1);464 _003C_003Eu__2 = val;465 _003C_003Et__builder.AwaitUnsafeOnCompleted<ConfiguredTaskAwaiter<Diff>, _003COnSavingAsync_003Ed__4>(ref val, ref this);466 return;467 }468 goto IL_012b;469 IL_012b:470 result = val.GetResult();471 }472 catch (System.Exception exception)473 {474 _003C_003E1__state = -2;475 _003C_003Et__builder.SetException(exception);476 return;477 }478 _003C_003E1__state = -2;479 _003C_003Et__builder.SetResult(result);480 }481482 [DebuggerHidden]483 private void SetStateMachine(IAsyncStateMachine stateMachine)484 {485 _003C_003Et__builder.SetStateMachine(stateMachine);486 }487 }488489 public override int Priority => 23;490491 public LockedEntityLogic()492 {493 RegisterMethod("SetLockStateForDisplay").As<string[], bool>(_LockColumns);494 }495496 [AsyncStateMachine(typeof(_003COnLoadedAsync_003Ed__3))]497 public override async System.Threading.Tasks.Task<Diff> OnLoadedAsync(IEntity entity, LogicReadOnlyParameters parameters, CancellationToken cancellationToken)498 {499 //IL_0002: Unknown result type (might be due to invalid IL or missing references)500 //IL_0007: Unknown result type (might be due to invalid IL or missing references)501 //IL_0026: Unknown result type (might be due to invalid IL or missing references)502 //IL_0027: Unknown result type (might be due to invalid IL or missing references)503 if (!entity.State.HasFlagFast(EntityState.Locked))504 {505 return Diff.Empty;506 }507 Logger log = LogManager.GetLogger("ObjectLog");508 LogSessionId id = new LogSessionId(parameters.Session.Id, useMultiLanguage: false);509 DbObjectKey key = await DbObjectKey.CreateAsync(parameters.Session.MetaData(), entity, cancellationToken).ConfigureAwait(false);510 string[] array = await EntityLock.GetLockedColumnsAsync(parameters.Session, key, cancellationToken).ConfigureAwait(false);511 NLogExtensions.Debug(log, id, "Lock entity columns: {0}", string.Join(",", array));512 return new Diff(Enumerable.SelectMany<string, DiffOperation>((System.Collections.Generic.IEnumerable<string>)array, (Func<string, System.Collections.Generic.IEnumerable<DiffOperation>>)([CompilerGenerated] (string c) => new DiffOperation[2]513 {514 new DiffOperation515 {516 Name = c,517 Type = DiffOperationType.CanEdit,518 Value = false519 },520 new DiffOperation521 {522 Name = c,523 Type = DiffOperationType.LogicDisallowCanEdit,524 Value = "-" + Name525 }526 })));527 }528529 [AsyncStateMachine(typeof(_003COnSavingAsync_003Ed__4))]530 public override async System.Threading.Tasks.Task<Diff> OnSavingAsync(IEntity entity, LogicReadWriteParameters parameters, CancellationToken cancellationToken)531 {532 //IL_0002: Unknown result type (might be due to invalid IL or missing references)533 //IL_0007: Unknown result type (might be due to invalid IL or missing references)534 //IL_0026: Unknown result type (might be due to invalid IL or missing references)535 //IL_0027: Unknown result type (might be due to invalid IL or missing references)536 if (entity.State.HasFlagFast(EntityState.Locked) && !_GetOriginalXMarkedForDeletion(entity).HasFlagFast(XMarkedForDeletion.Locked))537 {538 await EntityLock.CheckAllowedAsync(parameters.Session, cancellationToken).ConfigureAwait(false);539 }540 return await base.OnSavingAsync(entity, parameters, cancellationToken).ConfigureAwait(false);541 }542543 [AsyncStateMachine(typeof(_003COnSavedAsync_003Ed__5))]544 public override System.Threading.Tasks.Task OnSavedAsync(IEntity entity, LogicReadWriteParameters parameters, CancellationToken cancellationToken)545 {546 //IL_0002: Unknown result type (might be due to invalid IL or missing references)547 //IL_0007: Unknown result type (might be due to invalid IL or missing references)548 //IL_0026: Unknown result type (might be due to invalid IL or missing references)549 //IL_0027: Unknown result type (might be due to invalid IL or missing references)550 _003COnSavedAsync_003Ed__5 _003COnSavedAsync_003Ed__ = default(_003COnSavedAsync_003Ed__5);551 _003COnSavedAsync_003Ed__._003C_003Et__builder = AsyncTaskMethodBuilder.Create();552 _003COnSavedAsync_003Ed__._003C_003E4__this = this;553 _003COnSavedAsync_003Ed__.entity = entity;554 _003COnSavedAsync_003Ed__.parameters = parameters;555 _003COnSavedAsync_003Ed__.cancellationToken = cancellationToken;556 _003COnSavedAsync_003Ed__._003C_003E1__state = -1;557 ((AsyncTaskMethodBuilder)(ref _003COnSavedAsync_003Ed__._003C_003Et__builder)).Start<_003COnSavedAsync_003Ed__5>(ref _003COnSavedAsync_003Ed__);558 return ((AsyncTaskMethodBuilder)(ref _003COnSavedAsync_003Ed__._003C_003Et__builder)).Task;559 }560561 private System.Threading.Tasks.Task _LockColumns(ISession s, IEntity e, string[] columns, bool locked, CancellationToken ct)562 {563 //IL_003a: Unknown result type (might be due to invalid IL or missing references)564 Diff diff = new Diff(Enumerable.SelectMany<string, DiffOperation>(columns ?? Enumerable.Empty<string>(), (Func<string, System.Collections.Generic.IEnumerable<DiffOperation>>)((string c) => new DiffOperation[1]565 {566 new DiffOperation567 {568 Name = c,569 Type = DiffOperationType.LogicDisallowCanEdit,570 Value = (locked ? "+" : "-") + Name571 }572 })));573 return e.ApplyAsync(diff, ct);574 }575576 private XMarkedForDeletion _GetOriginalXMarkedForDeletion(IEntity entity)577 {578 IEntityRawData initialData = entity.GetInitialData();579 if (initialData == null)580 {581 return XMarkedForDeletion.None;582 }583 if (!initialData.TryGetValue("xmarkedfordeletion", out var value))584 {585 return XMarkedForDeletion.None;586 }587 return (XMarkedForDeletion)DbVal.ConvertTo<int>(value);588 }589}590