public void Add(XtraBinding XtraBinding, object DataSourceItem, XtraBindingStoredItemState State)
        {
            object underlyingItem = XtraBinding.ItemAdapter.GetUnderlyingDataSourceItem(DataSourceItem);

            XtraBindingUpdateSetEntity enty = _entyties.FirstOrDefault(p => p.xtraBinding == XtraBinding);

            if (enty == null)
            {
                enty = new XtraBindingUpdateSetEntity(XtraBinding);

                _entyties.Add(enty);
            }

            XtraBindingStoredItem item = GetStoredItem(enty, underlyingItem);

            if (item == null)
            {
                item = new XtraBindingStoredItem();

                enty.StoredItems.Add(item);
            }

            item.Update(GetFieldsValues(XtraBinding, underlyingItem), State);

            item.UpdateDataSourceItem(DataSourceItem);
        }
        private IDictionary<XtraBindingStoredItem, object> GetUnderlyingObjects(XtraBindingUpdateSetEntity UpdateSetEntity, IEnumerable<object> PKS)
        {
            IEnumerable<XtraBindingStoredItem> storedItems =  UpdateSetEntity.StoredItems.Where(p => PKS.Contains(p.FieldsValues[GetPkFieldName(UpdateSetEntity.xtraBinding)]));

            return _updateSetDataConverter.GetUnderlyingObjects(UpdateSetEntity.xtraBinding.DataSource, storedItems, false).Select((p, i) => new { p = storedItems.ElementAt(i), s = p }).ToDictionary(k => k.p, v => v.s);
        }
        private XtraBindingStoredItem GetStoredItem(XtraBindingUpdateSetEntity UpdateSetEntity, object UnerlyingItem)
        {
            string key = _updateSetDataConverter.GetPrimaryKeyFieldName(UpdateSetEntity.xtraBinding.DataSource);

            return UpdateSetEntity.StoredItems.Where(p => p.FieldsValues[key].Equals(_updateSetDataConverter.GetValue(UnerlyingItem, key))).FirstOrDefault();
        }