Ejemplo n.º 1
0
        public override IObjectsDataSet CloneDirtyObjects(IObjectsDataSet rootDataSet)
        {
            var  clone = new PlaceToLocationObjectsDataSet(rootDataSet as ObjectsDataSet);
            bool completed;

            foreach (var keyValue in this.PlaceToLocationObjects.Where(o => o.Value.IsDirty || o.Value.IsMarkedForDeletion))
            {
                var cloneObject = (PlaceToLocationDataObject)keyValue.Value.Clone(false);
                cloneObject.InternalObjectId = keyValue.Value.InternalObjectId;

                completed = false;
                while (!completed)
                {
                    completed = clone.PlaceToLocationObjects.TryAdd(keyValue.Key, cloneObject);
                }
            }

            foreach (var keyValue in this.PlaceToLocationObjectInternalIds
                     .Where(o => this.PlaceToLocationObjects[o.Value].IsDirty || this.PlaceToLocationObjects[o.Value].IsMarkedForDeletion))
            {
                completed = false;

                var count = 0;
                while (!completed && count++ < 15)
                {
                    completed = clone.PlaceToLocationObjectInternalIds.TryAdd(keyValue.Key.Clone(), keyValue.Value);
                }
            }

            // CloneDirtyObjects is used to pass only dirty objects to server to save changes. Since indexes are not serialized, no need to clone them
            return(clone);
        }
Ejemplo n.º 2
0
        public override IObjectsDataSet Clone(IObjectsDataSet rootDataSet)
        {
            var  clone = new PlaceToLocationObjectsDataSet(rootDataSet as ObjectsDataSet);
            bool completed;

            foreach (var keyValue in this.PlaceToLocationObjects)
            {
                var cloneObject = (PlaceToLocationDataObject)keyValue.Value.Clone(false);
                cloneObject.InternalObjectId = keyValue.Value.InternalObjectId;

                completed = false;
                var count = 0;
                while (!completed && count++ < 15)
                {
                    completed = clone.PlaceToLocationObjects.TryAdd(keyValue.Key, cloneObject);
                }
            }

            foreach (var keyValue in this.PlaceToLocationObjectInternalIds)
            {
                completed = false;
                var count = 0;
                while (!completed && count++ < 15)
                {
                    completed = clone.PlaceToLocationObjectInternalIds.TryAdd(keyValue.Key.Clone(), keyValue.Value);
                }
            }

            foreach (var fkKeyValue in this.Location_FKIndex)
            {
                var iscompleted = false;
                var count2      = 0;
                while (!iscompleted && count2++ < 15)
                {
                    iscompleted = clone.Location_FKIndex.TryAdd(fkKeyValue.Key, new List <int>());
                }

                foreach (var pk in fkKeyValue.Value)
                {
                    clone.Location_FKIndex[fkKeyValue.Key].Add(pk);
                }
            }

            foreach (var fkKeyValue in this.Place_FKIndex)
            {
                var iscompleted = false;
                var count2      = 0;
                while (!iscompleted && count2++ < 15)
                {
                    iscompleted = clone.Place_FKIndex.TryAdd(fkKeyValue.Key, new List <int>());
                }

                foreach (var pk in fkKeyValue.Value)
                {
                    clone.Place_FKIndex[fkKeyValue.Key].Add(pk);
                }
            }


            return(clone);
        }