コード例 #1
0
        /// <summary>
        /// 登錄到記憶體中
        /// </summary>
        /// <param name="entityTable"></param>
        public void Regist(EntityTable entityTable, OPStatus opStatus)
        {
            //if (entityTable == null) return;
            if (entityTable == null || (opStatus == OPStatus.Steady && entityTable.HasCollectionChangedEventSubscriber()))
            {
                return;
            }
            if (opStatus.IsPassSchema())
            {
                entityTable.GetAttributesEntity().Status = opStatus;
                updatingTables[GenKey(entityTable, true)] = entityTable;
                return;
            }

            //if(HasCollectionChangedEventSubscriber())
            var attris = entityTable.GetAttributesEntity();

            attris.Status = opStatus;
            entityTable.CollectionChanged -= OnTableCollectionChanged;
            entityTable.CollectionChanged += OnTableCollectionChanged;
            //Comment out: 每次因EntityTable的rows可能數量不同,有的是部分
            //if (!attris.IsPartial&&updatingTables.ContainsKey(GenKey(entityTable)))
            //    return;
            Action <EntityRow> action = delegate(EntityRow row)
            {
                var attribute = row.GetAttributesEntity();
                //attribute.Status = opStatus;
                row.PropertyChanged -= OnRowChanged;
                row.PropertyChanged += OnRowChanged;
            };
            EntityTable registedTable = TakeRegistedTable(entityTable);

            entityTable.Rows.ForEach(row => { action(row); DoRegist(registedTable, row, opStatus); });
        }