public new void StoreObject(object obj, Transaction transaction) { lock (_locker) { int oid = base.GetOID(obj); if (oid == 0)//try get by ServerID { Sqo.Internal._bs._loidby(this, ReflectionHelper.GetIdBackingField(obj.GetType()), obj); } oid = base.GetOID(obj); DirtyOperation dop = oid == 0 ? DirtyOperation.Inserted : DirtyOperation.Updated; base.StoreObject(obj, transaction); CreateDirtyEntity(obj, dop, transaction); } }
private async Task CreateDirtyEntityAsync(object obj, DirtyOperation dop, Transaction transaction) { DirtyEntity dirtyEntity = new DirtyEntity(); dirtyEntity.EntityOID = base.GetOID(obj); dirtyEntity.DirtyOp = dop; dirtyEntity.EntityType = ReflectionHelper.GetDiscoveringTypeName(obj.GetType()); if (transaction != null) { await base.StoreObjectAsync(dirtyEntity, transaction); } else { await base.StoreObjectAsync(dirtyEntity); } }
public new async Task StoreObjectAsync(object obj, Transaction transaction) { bool locked = false; await _lockerAsync.LockAsync(obj.GetType(), out locked); try { int oid = base.GetOID(obj); if (oid == 0) //try get by ServerID { Sqo.Internal._bs._loidby(this, ReflectionHelper.GetIdBackingField(obj.GetType()), obj); } oid = base.GetOID(obj); DirtyOperation dop = oid == 0 ? DirtyOperation.Inserted : DirtyOperation.Updated; await base.StoreObjectAsync(obj, transaction); await CreateDirtyEntityAsync(obj, dop, transaction); } finally { if (locked) { _lockerAsync.Release(); } } }
private async Task CreateDirtyEntityAsync(object obj, DirtyOperation dop) { await this.CreateDirtyEntityAsync(obj, dop, null); }
private void CreateDirtyEntity(object obj, DirtyOperation dop) { this.CreateDirtyEntity(obj, dop, null); }