shashisadasivan / EDMXTrimmer

D365 Finance and operations EDMX trimmer
MIT License
21 stars 12 forks source link

:bug: NullReferenceException when using both --entitiestokeep and --entitiestoexlude #16

Closed FH-Inway closed 1 year ago

FH-Inway commented 1 year ago

When using both parameters --entitiestokeep and --entitiestoexlude it can happen that a NullReferenceException is thrown.

This happens when --entitiestokeep does not retain the entities that are then specified to be excluded by --entitiestoexclude. Since the entities were already removed by --entitiestokeep, the logic for --entitiestoexclude then tries to remove entities that were already removed.

Here is a sample call for a D365FO .edmx file that causes the exception:

.\EDMXTrimmer.exe --edmxfile=C:\Temp\d365fo-odata.edmx --entitiestokeep=DataManagementDefinitionGroups --entitiestoexclude=RetailReturnPolicies --verbose
EDMX Saved to file: Output.edmx
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
   at EDMXTrimmer.EdmxTrimmer.<>c.<RemoveEntitySets>b__40_0(XmlNode n) in C:\Repositories\EDMXTrimmer\EDMXTrimmer\EDMXTrimmer\EdmxTrimmer.cs:line 134
   at System.Collections.Generic.List`1.ForEach(Action`1 action)
   at EDMXTrimmer.EdmxTrimmer.RemoveEntitySets(List`1 entitySets, List`1 entitiesKeep) in C:\Repositories\EDMXTrimmer\EDMXTrimmer\EDMXTrimmer\EdmxTrimmer.cs:line 134
   at EDMXTrimmer.EdmxTrimmer.RemoveExcludedEntities(List`1 entitiesToExclude, List`1 entitySets, List`1 entityTypes) in C:\Repositories\EDMXTrimmer\EDMXTrimmer\EDMXTrimmer\EdmxTrimmer.cs:line 107
   at EDMXTrimmer.EdmxTrimmer.AnalyzeFile() in C:\Repositories\EDMXTrimmer\EDMXTrimmer\EDMXTrimmer\EdmxTrimmer.cs:line 76
   at EDMXTrimmer.Program.Main(String[] args) in C:\Repositories\EDMXTrimmer\EDMXTrimmer\EDMXTrimmer\Program.cs:line 63