예제 #1
0
        /// <summary>
        /// 检查是否有绑定事件,防止没有绑定导致数据丢失
        /// </summary>
        /// <param name="data"></param>
        private void CheckEventBind(AbstractEntity data)
        {
            if (data == null || data.IsReadOnly)
            {
                return;
            }
            var schema = data.GetSchema();

            if (!schema.HasObjectColumns)
            {
                return;
            }

            var columns = schema.GetObjectColumns();

            foreach (var column in columns)
            {
                var temp = data.GetPropertyValue(column.Name) as IItemChangeEvent;
                if (temp != null && temp.ItemEvent.Parent == null)
                {
                    temp.PropertyName = column.Name;
                    data.AddChildrenListener(temp);
                    temp.IsInCache = true;
                }
            }
        }
예제 #2
0
 /// <summary>
 /// entity data send to client
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="eventargs"></param>
 public static void OnChange(AbstractEntity sender, CacheItemEventArgs eventargs)
 {
     try
     {
         if (sender == null ||
             (sender as BaseEntity) == null ||
             !sender.GetSchema().IsEntitySync)
         {
             return;
         }
         string key = sender.GetKeyCode();
         if (!_syncPools.ContainsKey(key))
         {
             _syncPools[key] = true;
             _sendQueue.Enqueue(sender as BaseEntity);
             singal.Set();
         }
     }
     catch (Exception ex)
     {
         TraceLog.WriteError("EntitySync Notify error:{0}", ex);
     }
 }
예제 #3
0
 /// <summary>
 /// entity data send to client
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="eventargs"></param>
 public static void OnChange(AbstractEntity sender, CacheItemEventArgs eventargs)
 {
     try
     {
         if (sender == null ||
             (sender as BaseEntity) == null ||
             !sender.GetSchema().IsEntitySync)
         {
             return;
         }
         string key = sender.GetKeyCode();
         if (!_syncPools.ContainsKey(key))
         {
             _syncPools[key] = true;
             _sendQueue.Enqueue(sender as BaseEntity);
             singal.Set();
         }
     }
     catch (Exception ex)
     {
         TraceLog.WriteError("EntitySync Notify error:{0}", ex);
     }
 }