예제 #1
0
        public override void Save()
        {
            var saveSet = SetKeeper.Instance();

            if (saveSet.IsDirty)
            {
                var list = saveSet.GetSet();
                saveSet.Clear();
                //TODO В DBServer надо сделать функции с групповым входным параметром, а внутри их - транзакции
                foreach (var asm in list)
                {
                    if (asm.IsVirtual)
                    {
                        var id = DBserver.CreateBlock(asm.BlockType.BlockTypeID, asm.ParentID, (int)asm.Order);
                        asm.BlockID = id;
                    }
                    else
                    {
                        DBserver.SetParent(asm.BlockID, asm.ParentID);
                        DBserver.SetOrder(asm.BlockID, (int)asm.Order);
                    }
                    var fh_id = DBserver.SetFactData(asm.BlockID, asm.Blob);
                    asm.FactID = fh_id;
                }
            }

/*			if (asm.IsDeleted == 1)
 *                              DBserver.Delete(asm.BlockID);
 *                      DBserver.SetFactData(asm.BlockID, asm.Blob);*/
        }
예제 #2
0
        public static SetKeeper Instance()
        {
            //чтобы не лочить каждое обращение, так как null будет только 1 раз
            if (_setKeeper == null)
            {
                lock (_sunc)
                {
                    //теперь ещё раз проверяем, чтобы не создать несколько объектов,
                    //остальные потоки после lock уже не создадут новые объекты
                    if (_setKeeper == null)
                    {
                        _setKeeper = new SetKeeper();
                    }
                }
            }

            return(_setKeeper);
        }
예제 #3
0
        public override void Add2SaveSet(AssemblyBase asm)
        {
            var saveSet = SetKeeper.Instance();

            saveSet.Add(asm);
        }