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