internal ResourceSetWrapper GetContainer(ResourceSetWrapper sourceContainer, ResourceType sourceResourceType, ResourceProperty navigationProperty) { ResourceAssociationSet set = this.GetResourceAssociationSet(sourceContainer, sourceResourceType, navigationProperty); if (set != null) { ResourceAssociationSetEnd end = set.GetRelatedResourceAssociationSetEnd(sourceContainer, sourceResourceType, navigationProperty); return(this.ValidateResourceSet(end.ResourceSet)); } return(null); }
internal static string GetAssociationName(ResourceAssociationSet associationSet) { ResourceAssociationSetEnd end = (associationSet.End1.ResourceProperty != null) ? associationSet.End1 : associationSet.End2; ResourceAssociationSetEnd end2 = (end == associationSet.End1) ? ((associationSet.End2.ResourceProperty != null) ? associationSet.End2 : null) : null; string str = end.ResourceType.Name + '_' + end.ResourceProperty.Name; if (end2 != null) { str = string.Concat(new object[] { str, '_', end2.ResourceType.Name, '_', end2.ResourceProperty.Name }); } return(str); }
public ResourceAssociationSet GetResourceAssociationSet(ResourceSetWrapper resourceSet, ResourceType resourceType, ResourceProperty resourceProperty) { ResourceAssociationSet set; resourceType = GetDeclaringTypeForProperty(resourceType, resourceProperty, null); string key = string.Concat(new object[] { resourceSet.Name, '_', resourceType.FullName, '_', resourceProperty.Name }); if (!this.ResourceAssociationSetCache.TryGetValue(key, out set)) { set = this.metadataProvider.GetResourceAssociationSet(resourceSet.ResourceSet, resourceType, resourceProperty); if (set != null) { ResourceAssociationSetEnd end = set.GetResourceAssociationSetEnd(resourceSet, resourceType, resourceProperty); ResourceAssociationSetEnd end2 = set.GetRelatedResourceAssociationSetEnd(resourceSet, resourceType, resourceProperty); ResourceSetWrapper wrapper = this.ValidateResourceSet(end2.ResourceSet); if (wrapper == null) { set = null; } else { ResourceType type = this.ValidateResourceType(end2.ResourceType); ResourceProperty property = null; if (end2.ResourceProperty != null) { ResourcePropertyKind stream = ResourcePropertyKind.Stream; property = type.TryResolvePropertyName(end2.ResourceProperty.Name, stream); } resourceType = this.ValidateResourceType(end.ResourceType); if ((((end.ResourceSet != resourceSet.ResourceSet) || (end.ResourceType != resourceType)) || ((end.ResourceProperty != resourceProperty) || (end2.ResourceSet != wrapper.ResourceSet))) || ((end2.ResourceType != type) || (end2.ResourceProperty != property))) { set = new ResourceAssociationSet(set.Name, new ResourceAssociationSetEnd(resourceSet.ResourceSet, resourceType, resourceProperty), new ResourceAssociationSetEnd(wrapper.ResourceSet, type, property)); } } } this.ResourceAssociationSetCache.Add(key, set); } return(set); }
private void PairUpNavigationProperty(MetadataProviderEdmEntityContainer entityContainer, ResourceSetWrapper resourceSet, ResourceType resourceType, ResourceProperty navigationProperty) { string key = string.Concat(new object[] { resourceSet.Name, '_', resourceType.FullName, '_', navigationProperty.Name }); if (!this.associationSetByKeyCache.ContainsKey(key)) { ResourceAssociationSet resourceAssociationSet = this.MetadataProvider.GetResourceAssociationSet(resourceSet, resourceType, navigationProperty); if (resourceAssociationSet != null) { string str2; string str3; ResourceAssociationSetEnd end = resourceAssociationSet.GetRelatedResourceAssociationSetEnd(resourceSet, resourceType, navigationProperty); if (end.ResourceProperty != null) { ResourceAssociationSet set2 = this.MetadataProvider.GetResourceAssociationSet(this.MetadataProvider.ValidateResourceSet(end.ResourceSet), end.ResourceType, end.ResourceProperty); if ((set2 == null) || (resourceAssociationSet.Name != set2.Name)) { throw new InvalidOperationException(System.Data.Services.Strings.ResourceAssociationSet_BidirectionalAssociationMustReturnSameResourceAssociationSetFromBothEnd); } } if (end.ResourceProperty != null) { str2 = string.Concat(new object[] { end.ResourceSet.Name, '_', end.ResourceType.FullName, '_', end.ResourceProperty.Name }); } else { str2 = string.Concat(new object[] { end.ResourceSet.Name, "_Null_", resourceType.FullName, '_', navigationProperty.Name }); } if (this.associationSetByKeyCache.TryGetValue(str2, out str3)) { throw new InvalidOperationException(System.Data.Services.Strings.ResourceAssociationSet_MultipleAssociationSetsForTheSameAssociationTypeMustNotReferToSameEndSets(str3, resourceAssociationSet.Name, end.ResourceSet.Name)); } ResourceAssociationType resourceAssociationType = resourceAssociationSet.ResourceAssociationType; this.PairUpNavigationPropertyWithResourceAssociationSet(entityContainer, resourceAssociationSet, resourceAssociationType, resourceType, navigationProperty); this.associationSetByKeyCache.Add(str2, resourceAssociationSet.Name); this.associationSetByKeyCache.Add(key, resourceAssociationSet.Name); } } }
private void PairUpNavigationPropertyWithResourceAssociationSet(MetadataProviderEdmEntityContainer entityContainer, ResourceAssociationSet resourceAssociationSet, ResourceAssociationType resourceAssociationType, ResourceType resourceType, ResourceProperty navigationProperty) { string associationEndName; EdmMultiplicity multiplicity; EdmOnDeleteAction deleteBehavior; string str3; EdmMultiplicity multiplicity2; EdmOnDeleteAction none; string typeNamespace; bool flag = (resourceAssociationSet.End1.ResourceProperty != null) && (resourceAssociationSet.End2.ResourceProperty != null); string entitySetName = MetadataProviderUtils.GetEntitySetName(resourceAssociationSet.End1.ResourceSet); string name = MetadataProviderUtils.GetEntitySetName(resourceAssociationSet.End2.ResourceSet); bool isPrinciple = false; List<IEdmStructuralProperty> dependentProperties = null; if (resourceAssociationType != null) { associationEndName = resourceAssociationType.End1.Name; deleteBehavior = resourceAssociationType.End1.DeleteBehavior; multiplicity2 = MetadataProviderUtils.ConvertMultiplicity(resourceAssociationType.End1.Multiplicity); str3 = resourceAssociationType.End2.Name; none = resourceAssociationType.End2.DeleteBehavior; multiplicity = MetadataProviderUtils.ConvertMultiplicity(resourceAssociationType.End2.Multiplicity); ResourceReferentialConstraint referentialConstraint = resourceAssociationType.ReferentialConstraint; if (referentialConstraint != null) { isPrinciple = object.ReferenceEquals(resourceAssociationType.End1, referentialConstraint.PrincipalEnd); IEdmEntityType type = isPrinciple ? ((IEdmEntityType) this.EnsureSchemaType(resourceAssociationSet.End2.ResourceType)) : ((IEdmEntityType) this.EnsureSchemaType(resourceAssociationSet.End1.ResourceType)); dependentProperties = new List<IEdmStructuralProperty>(); foreach (ResourceProperty property in referentialConstraint.DependentProperties) { IEdmProperty property2 = type.FindProperty(property.Name); dependentProperties.Add((IEdmStructuralProperty) property2); } } } else { if (!flag) { if (resourceAssociationSet.End1.ResourceProperty != null) { associationEndName = resourceType.Name; str3 = navigationProperty.Name; } else { associationEndName = navigationProperty.Name; str3 = resourceType.Name; } } else { associationEndName = MetadataProviderUtils.GetAssociationEndName(resourceAssociationSet.End1.ResourceType, resourceAssociationSet.End1.ResourceProperty); str3 = MetadataProviderUtils.GetAssociationEndName(resourceAssociationSet.End2.ResourceType, resourceAssociationSet.End2.ResourceProperty); } multiplicity = MetadataProviderUtils.GetMultiplicity(resourceAssociationSet.End1.ResourceProperty); deleteBehavior = EdmOnDeleteAction.None; multiplicity2 = MetadataProviderUtils.GetMultiplicity(resourceAssociationSet.End2.ResourceProperty); none = EdmOnDeleteAction.None; } string associationName = (resourceAssociationType == null) ? MetadataProviderUtils.GetAssociationName(resourceAssociationSet) : resourceAssociationType.Name; if ((resourceAssociationType == null) || (resourceAssociationType.NamespaceName == null)) { ResourceAssociationSetEnd end = (resourceAssociationSet.End1.ResourceProperty != null) ? resourceAssociationSet.End1 : resourceAssociationSet.End2; typeNamespace = this.GetTypeNamespace(end.ResourceType); } else { typeNamespace = resourceAssociationType.NamespaceName; } ResourceProperty resourceProperty = resourceAssociationSet.End1.ResourceProperty; ResourceProperty property4 = resourceAssociationSet.End2.ResourceProperty; MetadataProviderEdmNavigationProperty partnerProperty = null; MetadataProviderEdmNavigationProperty property6 = null; if (resourceProperty != null) { IEdmEntityType type2 = (IEdmEntityType) this.EnsureSchemaType(resourceAssociationSet.End1.ResourceType); partnerProperty = (MetadataProviderEdmNavigationProperty) type2.FindProperty(resourceProperty.Name); } if (property4 != null) { IEdmEntityType type3 = (IEdmEntityType) this.EnsureSchemaType(resourceAssociationSet.End2.ResourceType); property6 = (MetadataProviderEdmNavigationProperty) type3.FindProperty(property4.Name); } IEdmNavigationProperty property7 = (partnerProperty != null) ? ((IEdmNavigationProperty) partnerProperty) : ((IEdmNavigationProperty) new MetadataProviderEdmSilentNavigationProperty(property6, deleteBehavior, multiplicity, associationEndName)); IEdmNavigationProperty partner = (property6 != null) ? ((IEdmNavigationProperty) property6) : ((IEdmNavigationProperty) new MetadataProviderEdmSilentNavigationProperty(partnerProperty, none, multiplicity2, str3)); MetadataProviderUtils.FixUpNavigationPropertyWithAssociationSetData(property7, partner, isPrinciple, dependentProperties, deleteBehavior, multiplicity); MetadataProviderUtils.FixUpNavigationPropertyWithAssociationSetData(partner, property7, !isPrinciple, dependentProperties, none, multiplicity2); EdmEntitySet entitySet = (EdmEntitySet) entityContainer.FindEntitySet(entitySetName); EdmEntitySet target = (EdmEntitySet) entityContainer.FindEntitySet(name); if (partnerProperty != null) { entitySet.AddNavigationTarget(partnerProperty, target); this.SetAssociationSetName(entitySet, partnerProperty, resourceAssociationSet.Name); this.SetAssociationSetAnnotations(entitySet, partnerProperty, MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.End1.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.End2.CustomAnnotations)); } if (property6 != null) { target.AddNavigationTarget(property6, entitySet); this.SetAssociationSetName(target, property6, resourceAssociationSet.Name); if (partnerProperty == null) { this.SetAssociationSetAnnotations(entitySet, property6, MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.End1.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.End2.CustomAnnotations)); } } this.SetAssociationNamespace(property7, typeNamespace); this.SetAssociationName(property7, associationName); this.SetAssociationEndName(property7, associationEndName); this.SetAssociationNamespace(partner, typeNamespace); this.SetAssociationName(partner, associationName); this.SetAssociationEndName(partner, str3); if (resourceAssociationType != null) { this.SetAssociationAnnotations(property7, MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationType.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, (property7.GetPrimary() == property7) ? resourceAssociationType.End1.CustomAnnotations : resourceAssociationType.End2.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, (property7.GetPrimary() == property7) ? resourceAssociationType.End2.CustomAnnotations : resourceAssociationType.End1.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, (resourceAssociationType.ReferentialConstraint != null) ? resourceAssociationType.ReferentialConstraint.CustomAnnotations : null)); } }
public void AddAssociationSet(ResourceAssociationSet resourceAssociationSet) { _associationSets.Add(resourceAssociationSet); }
/// <summary> /// Given the association set, generate the association type name. /// </summary> /// <param name="associationSet">association set</param> /// <returns>association type name.</returns> internal static string GetAssociationTypeName(ResourceAssociationSet associationSet) { Debug.Assert(associationSet != null, "associationSet != null"); // end1 is always the end with the navigation property ResourceAssociationSetEnd end1 = associationSet.End1.ResourceProperty != null ? associationSet.End1 : associationSet.End2; // end2 points to the other end and is null if the other end has null navigation property ResourceAssociationSetEnd end2 = (end1 == associationSet.End1 ? (associationSet.End2.ResourceProperty != null ? associationSet.End2 : null) : null); string associationTypeName = end1.ResourceType.Name + '_' + end1.ResourceProperty.Name; if (end2 != null) { associationTypeName = associationTypeName + '_' + end2.ResourceType.Name + '_' + end2.ResourceProperty.Name; } return associationTypeName; }
/// <summary> /// Get the resource association type from the given resource association set and one of its ends /// </summary> /// <param name="associationSet">Association set to get the association type</param> /// <param name="resourceSet">Resource set for one of the ends</param> /// <param name="resourceType">Resource type for one of the ends</param> /// <param name="navigationProperty">Resource property for one of the ends</param> /// <returns>Resource association type instance</returns> private ResourceAssociationType GetResourceAssociationType(ResourceAssociationSet associationSet, ResourceSetWrapper resourceSet, ResourceType resourceType, ResourceProperty navigationProperty) { string typeNamespace = this.GetTypeNamepace(resourceType); Dictionary<string, ResourceAssociationType> associationTypesInNamespece = this.GetAssociationTypesForNamespace(typeNamespace); ResourceAssociationType associationType; string associationTypeName = GetAssociationTypeName(associationSet); string associationTypeLookupKey = GetAssociationTypeLookupName(resourceType, navigationProperty); if (!associationTypesInNamespece.TryGetValue(associationTypeLookupKey, out associationType)) { string end1Name; string end2Name; bool isBiDirectional = associationSet.End1.ResourceProperty != null && associationSet.End2.ResourceProperty != null; if (!isBiDirectional) { // If this association is not bi-directional, we use the type name as the from role name and the property name as the to role name // This is the behavior for V1. if (associationSet.End1.ResourceProperty != null) { end1Name = resourceType.Name; end2Name = navigationProperty.Name; } else { end1Name = navigationProperty.Name; end2Name = resourceType.Name; } } else { // If the association is bi-directional, we use typeName_propertyName from each end as the name for that role end1Name = GetAssociationTypeLookupName(associationSet.End1.ResourceType, associationSet.End1.ResourceProperty); end2Name = GetAssociationTypeLookupName(associationSet.End2.ResourceType, associationSet.End2.ResourceProperty); Debug.Assert(end1Name != end2Name, "end1Name != end2Name"); } associationType = new ResourceAssociationType( associationTypeName, resourceType.Namespace, new ResourceAssociationTypeEnd(end1Name, associationSet.End1.ResourceType, associationSet.End1.ResourceProperty, associationSet.End2.ResourceProperty), new ResourceAssociationTypeEnd(end2Name, associationSet.End2.ResourceType, associationSet.End2.ResourceProperty, associationSet.End1.ResourceProperty)); associationTypesInNamespece.Add(associationTypeLookupKey, associationType); if (isBiDirectional) { ResourceAssociationSetEnd relatedEnd = associationSet.GetRelatedResourceAssociationSetEnd(resourceSet, resourceType, navigationProperty); string relatedEndLookupKey = GetAssociationTypeLookupName(relatedEnd.ResourceType, relatedEnd.ResourceProperty); associationTypesInNamespece.Add(relatedEndLookupKey, associationType); } } return associationType; }
public void CreateWcfType(Dictionary<string, ResourceSet> allSets) { ResourceType type = this.Ends[0].Type; ResourceType resourceType = this.Ends[1].Type; char[] chrArray = new char[1]; chrArray[0] = '.'; string[] strArrays = this.Name.Split(chrArray); string str = strArrays[(int)strArrays.Length - 1]; ResourceSet resourceSet = allSets.Values.FirstOrDefault<ResourceSet>((ResourceSet it) => it.ResourceType == type); ResourceSet resourceSet1 = allSets.Values.FirstOrDefault<ResourceSet>((ResourceSet it) => it.ResourceType == resourceType); if (resourceSet == null) { foreach (ResourceSet value in allSets.Values) { if (!type.IsSameOrBaseType(value.ResourceType)) { continue; } resourceSet = value; break; } } if (resourceSet1 == null) { foreach (ResourceSet value1 in allSets.Values) { if (!resourceType.IsSameOrBaseType(value1.ResourceType)) { continue; } resourceSet1 = value1; break; } } if (resourceSet != null && resourceSet1 != null) { ResourceAssociationSet resourceAssociationSet = new ResourceAssociationSet(str, new ResourceAssociationSetEnd(resourceSet, type, this.Ends[0].Property), new ResourceAssociationSetEnd(resourceSet1, resourceType, this.Ends[1].Property)); this.WcfClass.Add(resourceAssociationSet); } }
private void PairUpNavigationPropertyWithResourceAssociationSet(MetadataProviderEdmEntityContainer entityContainer, ResourceAssociationSet resourceAssociationSet, ResourceAssociationType resourceAssociationType, ResourceType resourceType, ResourceProperty navigationProperty) { string associationEndName; EdmMultiplicity multiplicity; EdmOnDeleteAction deleteBehavior; string str3; EdmMultiplicity multiplicity2; EdmOnDeleteAction none; string typeNamespace; bool flag = (resourceAssociationSet.End1.ResourceProperty != null) && (resourceAssociationSet.End2.ResourceProperty != null); string entitySetName = MetadataProviderUtils.GetEntitySetName(resourceAssociationSet.End1.ResourceSet); string name = MetadataProviderUtils.GetEntitySetName(resourceAssociationSet.End2.ResourceSet); bool isPrinciple = false; List <IEdmStructuralProperty> dependentProperties = null; if (resourceAssociationType != null) { associationEndName = resourceAssociationType.End1.Name; deleteBehavior = resourceAssociationType.End1.DeleteBehavior; multiplicity2 = MetadataProviderUtils.ConvertMultiplicity(resourceAssociationType.End1.Multiplicity); str3 = resourceAssociationType.End2.Name; none = resourceAssociationType.End2.DeleteBehavior; multiplicity = MetadataProviderUtils.ConvertMultiplicity(resourceAssociationType.End2.Multiplicity); ResourceReferentialConstraint referentialConstraint = resourceAssociationType.ReferentialConstraint; if (referentialConstraint != null) { isPrinciple = object.ReferenceEquals(resourceAssociationType.End1, referentialConstraint.PrincipalEnd); IEdmEntityType type = isPrinciple ? ((IEdmEntityType)this.EnsureSchemaType(resourceAssociationSet.End2.ResourceType)) : ((IEdmEntityType)this.EnsureSchemaType(resourceAssociationSet.End1.ResourceType)); dependentProperties = new List <IEdmStructuralProperty>(); foreach (ResourceProperty property in referentialConstraint.DependentProperties) { IEdmProperty property2 = type.FindProperty(property.Name); dependentProperties.Add((IEdmStructuralProperty)property2); } } } else { if (!flag) { if (resourceAssociationSet.End1.ResourceProperty != null) { associationEndName = resourceType.Name; str3 = navigationProperty.Name; } else { associationEndName = navigationProperty.Name; str3 = resourceType.Name; } } else { associationEndName = MetadataProviderUtils.GetAssociationEndName(resourceAssociationSet.End1.ResourceType, resourceAssociationSet.End1.ResourceProperty); str3 = MetadataProviderUtils.GetAssociationEndName(resourceAssociationSet.End2.ResourceType, resourceAssociationSet.End2.ResourceProperty); } multiplicity = MetadataProviderUtils.GetMultiplicity(resourceAssociationSet.End1.ResourceProperty); deleteBehavior = EdmOnDeleteAction.None; multiplicity2 = MetadataProviderUtils.GetMultiplicity(resourceAssociationSet.End2.ResourceProperty); none = EdmOnDeleteAction.None; } string associationName = (resourceAssociationType == null) ? MetadataProviderUtils.GetAssociationName(resourceAssociationSet) : resourceAssociationType.Name; if ((resourceAssociationType == null) || (resourceAssociationType.NamespaceName == null)) { ResourceAssociationSetEnd end = (resourceAssociationSet.End1.ResourceProperty != null) ? resourceAssociationSet.End1 : resourceAssociationSet.End2; typeNamespace = this.GetTypeNamespace(end.ResourceType); } else { typeNamespace = resourceAssociationType.NamespaceName; } ResourceProperty resourceProperty = resourceAssociationSet.End1.ResourceProperty; ResourceProperty property4 = resourceAssociationSet.End2.ResourceProperty; MetadataProviderEdmNavigationProperty partnerProperty = null; MetadataProviderEdmNavigationProperty property6 = null; if (resourceProperty != null) { IEdmEntityType type2 = (IEdmEntityType)this.EnsureSchemaType(resourceAssociationSet.End1.ResourceType); partnerProperty = (MetadataProviderEdmNavigationProperty)type2.FindProperty(resourceProperty.Name); } if (property4 != null) { IEdmEntityType type3 = (IEdmEntityType)this.EnsureSchemaType(resourceAssociationSet.End2.ResourceType); property6 = (MetadataProviderEdmNavigationProperty)type3.FindProperty(property4.Name); } IEdmNavigationProperty property7 = (partnerProperty != null) ? ((IEdmNavigationProperty)partnerProperty) : ((IEdmNavigationProperty) new MetadataProviderEdmSilentNavigationProperty(property6, deleteBehavior, multiplicity, associationEndName)); IEdmNavigationProperty partner = (property6 != null) ? ((IEdmNavigationProperty)property6) : ((IEdmNavigationProperty) new MetadataProviderEdmSilentNavigationProperty(partnerProperty, none, multiplicity2, str3)); MetadataProviderUtils.FixUpNavigationPropertyWithAssociationSetData(property7, partner, isPrinciple, dependentProperties, deleteBehavior, multiplicity); MetadataProviderUtils.FixUpNavigationPropertyWithAssociationSetData(partner, property7, !isPrinciple, dependentProperties, none, multiplicity2); EdmEntitySet entitySet = (EdmEntitySet)entityContainer.FindEntitySet(entitySetName); EdmEntitySet target = (EdmEntitySet)entityContainer.FindEntitySet(name); if (partnerProperty != null) { entitySet.AddNavigationTarget(partnerProperty, target); this.SetAssociationSetName(entitySet, partnerProperty, resourceAssociationSet.Name); this.SetAssociationSetAnnotations(entitySet, partnerProperty, MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.End1.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.End2.CustomAnnotations)); } if (property6 != null) { target.AddNavigationTarget(property6, entitySet); this.SetAssociationSetName(target, property6, resourceAssociationSet.Name); if (partnerProperty == null) { this.SetAssociationSetAnnotations(entitySet, property6, MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.End1.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationSet.End2.CustomAnnotations)); } } this.SetAssociationNamespace(property7, typeNamespace); this.SetAssociationName(property7, associationName); this.SetAssociationEndName(property7, associationEndName); this.SetAssociationNamespace(partner, typeNamespace); this.SetAssociationName(partner, associationName); this.SetAssociationEndName(partner, str3); if (resourceAssociationType != null) { this.SetAssociationAnnotations(property7, MetadataProviderUtils.ConvertCustomAnnotations(this, resourceAssociationType.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, (property7.GetPrimary() == property7) ? resourceAssociationType.End1.CustomAnnotations : resourceAssociationType.End2.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, (property7.GetPrimary() == property7) ? resourceAssociationType.End2.CustomAnnotations : resourceAssociationType.End1.CustomAnnotations), MetadataProviderUtils.ConvertCustomAnnotations(this, (resourceAssociationType.ReferentialConstraint != null) ? resourceAssociationType.ReferentialConstraint.CustomAnnotations : null)); } }