def add_link(parent, nav_prop, child)
    raise NotSupportedError, "You cannot add a link on an entity that isn't tracked (#{parent.class})" if parent.send(:__metadata).nil?
    raise ArgumentError, "'#{nav_prop}' is not a valid navigation property for #{parent.class}" unless parent.respond_to?(nav_prop.to_sym)
    raise ArgumentError, "'#{nav_prop}' is not a valid navigation property for #{parent.class}" unless @class_metadata[parent.class.to_s][nav_prop].nav_prop
    raise NotSupportedError, "You cannot add a link on a child entity that isn't tracked (#{child.class})" if child.send(:__metadata).nil?
    @save_operations << Operation.new("AddLink", nav_prop, parent, child)
  end
def add_link(parent, nav_prop, child)
    raise NotSupportedError, "You cannot add a link on an entity that isn't tracked (#{parent.class})" if parent.send(:__metadata).nil?
    raise ArgumentError, "'#{nav_prop}' is not a valid navigation property for #{parent.class}" unless parent.respond_to?(nav_prop.to_sym)
    raise ArgumentError, "'#{nav_prop}' is not a valid navigation property for #{parent.class}" unless @class_metadata[parent.class.to_s][nav_prop].nav_prop
    raise NotSupportedError, "You cannot add a link on a child entity that isn't tracked (#{child.class})" if child.send(:__metadata).nil?
    @save_operations << Operation.new("AddLink", nav_prop, parent, child)
  end
Adds a child object to a parent object's collection

 @param [Object] parent the parent object
 @param [String] nav_prop the name of the navigation property to add the child to
 @param [Object] child the child object
 @raise [NotSupportedError] if the `parent` isn't a tracked entity
 @raise [ArgumentError] if the `nav_prop` isn't a valid navigation property
 @raise [NotSupportedError] if the `child` isn't a tracked entity