コード例 #1
0
        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);
        }
コード例 #2
0
        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());
            }
        }