示例#1
0
 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);
     }
 }
示例#2
0
        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);
            }
        }
示例#3
0
        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();
                }
            }
        }
示例#4
0
 private async Task CreateDirtyEntityAsync(object obj, DirtyOperation dop)
 {
     await this.CreateDirtyEntityAsync(obj, dop, null);
 }
示例#5
0
 private void CreateDirtyEntity(object obj, DirtyOperation dop)
 {
     this.CreateDirtyEntity(obj, dop, null);
 }