Exemple #1
0
        RelatedModelMetadata[] GetRelatedModelMetadata(EntityType entityType)
        {
            var foreignKeys = GetForeignKeys(entityType);
            List <RelatedModelMetadata> relatedModelMetadata = new List <RelatedModelMetadata>();

            for (int x = 0; x < foreignKeys.Count; x++)
            {
                RelatedModelMetadata relatedModel = new RelatedModelMetadata();
                foreach (var navigationProperty in entityType.NavigationProperties)
                {
                    EntityType fromEntity = navigationProperty.FromEndMember.GetEntityType();
                    EntityType toEntity   = navigationProperty.ToEndMember.GetEntityType();

                    var relatedEntity = relatedModelMetadata.Where(re => re.AssociationPropertyName == toEntity.Name).Count();
                    if (relatedEntity != 0)
                    {
                        continue;
                    }

                    RelationshipType relationshipType = navigationProperty.RelationshipType;
                    relatedModel.AssociationPropertyName = navigationProperty.Name; //((AssociationType)(relationshipType)).ReferentialConstraints[0].ToProperties[0].Name;

                    //if (fromEntity.Properties.Count > 1)
                    //    relatedModel.DisplayPropertyName = toEntity.Properties[1].Name;
                    //else
                    relatedModel.DisplayPropertyName = toEntity.Properties[0].Name;
                    relatedModel.EntitySetName       = toEntity.Name;//navigationProperty.Name;

                    relatedModel.PrimaryKeyNames = new string[] { fromEntity.KeyMembers[0].Name };
                    relatedModel.ShortTypeName   = fromEntity.Name;
                    relatedModel.TypeName        = fromEntity.FullName;

                    if (!relatedModelMetadata.Contains(relatedModel))
                    {
                        relatedModelMetadata.Add(relatedModel);
                    }

                    string AssociationName = ((AssociationType)(relationshipType)).ReferentialConstraints[0].ToProperties[0].Name;
                    if (AssociationName == foreignKeys[x].Name)
                    {
                        break;
                    }
                }

                relatedModel.ForeignKeyPropertyNames = new string[] { foreignKeys[x].Name };
            }

            return(relatedModelMetadata.ToArray());
        }
Exemple #2
0
        // A foreign key, e.g. CategoryID, will have a value expression of Category.CategoryID
        public string GetValueExpression(PropertyMetadata property)
        {
            RelatedModelMetadata propertyModel = GetRelatedModelMetadata(property);

            return(propertyModel != null ? propertyModel.AssociationPropertyName + "." + propertyModel.DisplayPropertyName : property.PropertyName);
        }
Exemple #3
0
        // A foreign key, e.g. CategoryID, will have an association name of Category
        public string GetAssociationName(PropertyMetadata property)
        {
            RelatedModelMetadata propertyModel = GetRelatedModelMetadata(property);

            return(propertyModel != null ? propertyModel.AssociationPropertyName : property.PropertyName);
        }