Esempio n. 1
0
        /// <summary>
        /// Gets the Entity Keys of the provided EDMX Document.
        /// </summary>
        /// <param name="genParams">Parameters for the generation of DTOs.</param>
        /// <returns></returns>
        private static List <EntityKeyProperty> GetEntitiesKeyProperties(GenerateDTOsParams genParams)
        {
            LogManager.LogMethodStart();

            IEnumerable <XElement> entityNodeElements =
                genParams.EDMXDocument.DescendantsCSDL(EdmxNodes.EntityType);

            var result = new List <EntityKeyProperty>();

            foreach (XElement entityNode in entityNodeElements)
            {
                result.AddRange(DTOGenerator.GetEntityKeys(entityNode, entityNode,
                                                           entityNodeElements, genParams));
            }

            LogManager.LogMethodEnd();

            return(result);
        }
Esempio n. 2
0
        /// <summary>
        /// Gets the Keys of an Entity.
        /// </summary>
        /// <param name="entityNodeKeysOwner">EntityType node to get the keys from.</param>
        /// <param name="entityNodeToSetKeys">EntityType node to set the keys.</param>
        /// <param name="entityNodeElements">EntityType nodes.</param>
        /// <param name="genParams">Parameters for the generation of DTOs.</param>
        /// <returns></returns>
        private static List <EntityKeyProperty> GetEntityKeys(XElement entityNodeKeysOwner, XElement entityNodeToSetKeys,
                                                              IEnumerable <XElement> entityNodeElements, GenerateDTOsParams genParams)
        {
            LogManager.LogMethodStart();

            var result = new List <EntityKeyProperty>();

            IEnumerable <XElement> propertyRefNodeElements = entityNodeKeysOwner.DescendantsCSDL(EdmxNodes.PropertyRef);

            IEnumerable <XElement> propertyNodeElements = entityNodeKeysOwner.DescendantsCSDL(EdmxNodes.Property);

            foreach (var propertyRefNode in propertyRefNodeElements)
            {
                result.Add(new EntityKeyProperty(entityNodeToSetKeys, propertyRefNode,
                                                 propertyNodeElements, genParams));
            }

            // Does this Entity have a Base Type ?
            string entityBaseType = EdmxHelper.GetEntityBaseType(entityNodeKeysOwner);

            if (entityBaseType != null)
            {
                // Find the Base Type node
                XElement entityBaseTypeNode = entityNodeElements.FirstOrDefault(
                    e => e.Attribute(EdmxNodeAttributes.EntityType_Name).Value == entityBaseType);

                if (entityBaseTypeNode == null)
                {
                    throw new ApplicationException(string.Format(Resources.Error_BaseTypeNotFound,
                                                                 entityNodeKeysOwner.Attribute(EdmxNodeAttributes.EntityType_Name).Value, entityBaseType));
                }

                // Add the Entity Base Type keys to the resulting keys
                result.AddRange(DTOGenerator.GetEntityKeys(entityBaseTypeNode, entityNodeToSetKeys,
                                                           entityNodeElements, genParams));
            }

            LogManager.LogMethodEnd();

            return(result);
        }