Esempio n. 1
0
        internal void RegisterNewItem(ClientXObject <TKind> _child, Guid _collectionOwnerUid, int _fieldId)
        {
            var ownerDescriptor = GetDescriptor(_collectionOwnerUid);
            ClientXObjectDescriptor <TKind> childDescriptor;

            if (m_descriptors.TryGetValue(_child.Uid, out childDescriptor))
            {
                if (!childDescriptor.CollectionOwnerUid.Equals(_collectionOwnerUid))
                {
                    throw new ApplicationException("Object owned by another parent");
                }
                ProcessAddedToCollection(_child, ownerDescriptor, _fieldId);
                return;
                //throw new ApplicationException("Object is not unique");
            }

            var kindId = KindToInt(_child.Kind);
            var report = new XReport(_child.Uid, _child.GetChanges(), kindId, EState.SINGLE);

            m_transport.AddNew(report, m_sessionId, _collectionOwnerUid);

            var descriptor = new ClientXObjectDescriptor <TKind>(_child, this, kindId, _collectionOwnerUid);

            m_descriptors.Add(_child.Uid, descriptor);

            ProcessAddedToCollection(_child, ownerDescriptor, _fieldId);
            _child.SetClientInternal(this);
            _child.OnInstantiationFinished();
        }
Esempio n. 2
0
 void IXCollection <TKind> .AddSilently(ClientXObject <TKind> _item)
 {
     if (!m_dict.ContainsKey(_item.Uid))
     {
         m_dict.Add(_item.Uid, (T)_item);
         _item.SetClientInternal(m_client);
         UpdateVM(() => m_observableCollection.Add((T)_item));
     }
 }