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);*/ }
public static SetKeeper Instance() { //чтобы не лочить каждое обращение, так как null будет только 1 раз if (_setKeeper == null) { lock (_sunc) { //теперь ещё раз проверяем, чтобы не создать несколько объектов, //остальные потоки после lock уже не создадут новые объекты if (_setKeeper == null) { _setKeeper = new SetKeeper(); } } } return(_setKeeper); }
public override void Add2SaveSet(AssemblyBase asm) { var saveSet = SetKeeper.Instance(); saveSet.Add(asm); }