private AssociationCollectionHelper GetInverseCollectionHelper(T item)
        {
            PropertyInfo inversePropInfo = item.GetType().GetProperty(associationAttr.InversePropertyName);

            Debug.Assert(inversePropInfo != null, "Fail to find inverse property " + associationAttr.InversePropertyName);
            var associationCollHelper = new AssociationCollectionHelper(item, inversePropInfo);

            return(associationCollHelper);
        }
        public void Add(T item)
        {
            if (associationAttr == null)
            {
                AddInternal(item);
            }
            else
            {
                context.Update(item);

                AssociationCollectionHelper associationCollHelper = GetInverseCollectionHelper(item);
                associationCollHelper.Add(owner);
            }
        }
        private bool RemoveInverseAssociation(T item)
        {
            AssociationCollectionHelper associationCollHelper = GetInverseCollectionHelper(item);

            return(associationCollHelper.Remove(owner));
        }