Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support entity type filtration for the entities not included into sets #28

Merged
merged 3 commits into from
Nov 26, 2023

Conversation

AndrewK2
Copy link
Contributor

Supported filtration/inclusion of entities like the abstract "crmbaseentity" of DynamicsCRM

  • regexes caching to fix run time on EDMXes with a significant number of entities included

var entityTypeNames = entitySetsNodes
.Select(n => GetEntityTypeWithoutNamespace(n, TAG_ENTITY_TYPE))
.Concat(entityTypes
.Where(node => Regex.IsMatch(node.Attributes[ATTRIBUTE_NAME].Value, nameRegex) ? includeFiltered : !includeFiltered)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔧

Thanks again for the contributions. I had a chance to look at the commits of the smaller pr in detail. Looks pretty good so far.

This part needs some work, I think. I did some regression testing with D365FO edmx files and noticed that with the --entitiestoexclude option, the entities remained in the resulting file.

This seems to be caused by this change in how the entityTypeNames are determined. Previously, this was based only on the filtered entity sets (see below for the original logic). Now, it also adds the names from the directly filtered entity types. However, the entity type names are in singular, while the entity set name is in plural. The entity names for the include/exclude parameters so far have been given in plural. For the new version to work, they probably would need to be given both in plural and in singular. However, I'm not sure if that would work as filter for both entity sets and types.

Since the intent of this change is to enable filtering of entities that are not part of sets, one option I can think of is to provide additional parameters where the singular entity names are specified. Those would then only be applied to entitiy types that are not part of an entity set. Another simpler one might be to provide a --excludeentitiesnotinsets parameter to remove entities that are not part of sets alltogether.

List<String> entityTypesFound = new List<string>();
entitiesKeep.ForEach(n =>
{
string entityType = n.Attributes[TAG_ENTITY_TYPE].Value;
entityType = entityType.Replace(ENTITYNAMESPACE, "");
entityTypesFound.Add(entityType);
});

@FH-Inway FH-Inway merged commit a2db4e9 into shashisadasivan:master Nov 26, 2023
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants