/// <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); }
/// <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); }