internal void AddPropertyRef(Property property)
 {
     Debug.Assert(property != null, "property should not be null");
     if (property != null)
     {
         var propRef = new PropertyRef(this, null, GetNameNormalizerForPropertyRef());
         propRef.Name.SetRefName(property);
         propRef.Normalize();
         propRef.Resolve(Artifact.ModelManager.GetArtifactSet(Artifact.Uri));
         _propertyRefs.Add(propRef);
     }
 }
 // returns the ordinal position of the xelement 
 private static int GetOrdinalPosition(PropertyRef pr)
 {
     var i = 0;
     var parent = pr.Parent as PropertyRefContainer;
     foreach (var p in parent.PropertyRefs)
     {
         if (p == pr)
         {
             return i;
         }
         ++i;
     }
     Debug.Fail("couldn't find property ref in it's container!");
     return -1;
 }
 /// <summary>
 ///     Deletes the passed in PropertyRef in a referential constraint
 /// </summary>
 /// <param name="property"></param>
 internal DeleteReferentialConstraintPropertyRefCommand(PropertyRef property)
     : base(property)
 {
 }
 internal override DeleteEFElementCommand GetDeleteCommandForChild(PropertyRef pref)
 {
     return new DeleteReferentialConstraintPropertyRefCommand(pref);
 }
 internal override DeleteEFElementCommand GetDeleteCommandForChild(PropertyRef pref)
 {
     return(new DeleteReferentialConstraintPropertyRefCommand(pref));
 }
 internal virtual DeleteEFElementCommand GetDeleteCommandForChild(PropertyRef pref)
 {
     return(pref.GetDeleteCommand());
 }
 internal virtual DeleteEFElementCommand GetDeleteCommandForChild(PropertyRef pref)
 {
     return pref.GetDeleteCommand();
 }
 internal override bool ParseSingleElement(ICollection<XName> unprocessedElements, XElement elem)
 {
     if (elem.Name.LocalName == PropertyRef.ElementName)
     {
         var prop = new PropertyRef(this, elem, GetNameNormalizerForPropertyRef());
         prop.Parse(unprocessedElements);
         _propertyRefs.Add(prop);
     }
     else
     {
         return base.ParseSingleElement(unprocessedElements, elem);
     }
     return true;
 }