private static PropertyInfo[] GetDependentStructuralProperties(OeEdmModelMetadataProvider metadataProvider, EntityTypeInfo dependentInfo, PropertyInfo dependentProperty) { var dependentProperties = new List <PropertyInfo>(); PropertyInfo[] fkey = metadataProvider.GetForeignKey(dependentProperty); if (fkey == null) { foreach (PropertyInfo propertyInfo in metadataProvider.GetProperties(dependentInfo.ClrType)) { fkey = metadataProvider.GetForeignKey(propertyInfo); if (fkey != null && fkey.Length == 1 && fkey[0] == dependentProperty) { dependentProperties.Add(propertyInfo); } } if (dependentProperties.Count == 0) { PropertyInfo clrProperty = dependentInfo.ClrType.GetPropertyIgnoreCase(dependentProperty.Name + "id"); if (clrProperty != null) { dependentProperties.Add(clrProperty); } } } else { dependentProperties.AddRange(fkey); } PropertyInfo[] dependentPropertyArray = dependentProperties.ToArray(); metadataProvider.SortClrPropertyByOrder(dependentPropertyArray); return(dependentPropertyArray); }
private static PropertyDescriptor[] GetDependentStructuralProperties(OeEdmModelMetadataProvider metadataProvider, EntityTypeInfo dependentInfo, PropertyDescriptor dependentProperty) { var dependentProperties = new List <PropertyDescriptor>(1); PropertyDescriptorCollection clrProperties = TypeDescriptor.GetProperties(dependentInfo.ClrType); PropertyDescriptor fkey = metadataProvider.GetForeignKey(dependentProperty); if (fkey == null) { foreach (PropertyDescriptor propertyDescriptor in clrProperties) { fkey = metadataProvider.GetForeignKey(propertyDescriptor); if (fkey == dependentProperty) { dependentProperties.Add(propertyDescriptor); } } if (dependentProperties.Count == 0) { PropertyDescriptor clrProperty = clrProperties.Find(dependentProperty.Name + "Id", true); if (clrProperty != null) { dependentProperties.Add(clrProperty); } } } else { dependentProperties.Add(fkey); } if (dependentProperties.Count == 1) { return(dependentProperties.ToArray()); } else { return(SortClrPropertyByOrder(metadataProvider, dependentProperties).ToArray()); } }