/// <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; } } }
/// <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); } }