public bool GetFromCacheOrFromDB <T>(uint Key, out T obj)
 {
     if (GetFromCache(Key, out T x))
     {
         obj = x;
         return(true);
     }
     else
     {
         obj = HAdapter.Get <T>(Key);
         if (obj != default)
         {
             Put2ObjectMap(CacheObject <uint> .ValueOf(Key, obj));
         }
         return(true);
     }
 }
        public void IUpdateEntityIntime(uint Key, object Entity)
        {
            if (Entity is CacheObject <uint> x)
            {
                Put2ObjectMap(x); // UPDATE OBJECT IN LIST
                Update(x.GetEntity());
                lock (UPDATE_QUEUE)
                    UPDATE_QUEUE.Remove(x.GetKey());
            }
            else
            {
                x = CacheObject <uint> .ValueOf(Key, Entity);

                Put2ObjectMap(x);
                Update(x.GetEntity());
                lock (UPDATE_QUEUE)
                    UPDATE_QUEUE.Remove(x.GetKey());
            }
        }
        public void ISubmitUpdate2Queue(uint Key, object Entity)
        {
            if (Entity is CacheObject <uint> x)
            {
                Put2ObjectMap(x); // UPDATE OBJECT IN LIST
                lock (UPDATE_QUEUE)
                    if (!UPDATE_QUEUE.Contains(x.GetKey()))
                    {
                        UPDATE_QUEUE.Add(x.GetKey());
                    }
            }
            else
            {
                x = CacheObject <uint> .ValueOf(Key, Entity);

                Put2ObjectMap(x);
                lock (UPDATE_QUEUE)
                    if (!UPDATE_QUEUE.Contains(x.GetKey()))
                    {
                        UPDATE_QUEUE.Add(x.GetKey());
                    }
            }
        }