Skip to content

Commit

Permalink
Fixed issue with caching of enumerable instead of list. (#2123)
Browse files Browse the repository at this point in the history
  • Loading branch information
Nikos Sarris authored Jul 26, 2021
1 parent 92ebdfa commit 04acc17
Showing 1 changed file with 5 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ internal abstract class CsdlSemanticsNavigationSource : CsdlSemanticsElement, IE
private readonly ConcurrentDictionary<IEdmNavigationProperty, IEdmUnknownEntitySet> unknownNavigationPropertyCache =
new ConcurrentDictionary<IEdmNavigationProperty, IEdmUnknownEntitySet>();

private ConcurrentDictionary<IEdmNavigationProperty, IEnumerable<IEdmNavigationPropertyBinding>> navigationPropertyBindingCache =
private readonly ConcurrentDictionary<IEdmNavigationProperty, IEnumerable<IEdmNavigationPropertyBinding>> navigationPropertyBindingCache =
new ConcurrentDictionary<IEdmNavigationProperty, IEnumerable<IEdmNavigationPropertyBinding>>();

public CsdlSemanticsNavigationSource(CsdlSemanticsEntityContainer container, CsdlAbstractNavigationSource navigationSource)
Expand Down Expand Up @@ -130,15 +130,10 @@ public IEnumerable<IEdmNavigationPropertyBinding> FindNavigationPropertyBindings
{
if (!navigationProperty.ContainsTarget)
{
IEnumerable<IEdmNavigationPropertyBinding> navigationBindingList = null;

if (!navigationPropertyBindingCache.TryGetValue(navigationProperty, out navigationBindingList))
{
navigationBindingList = this.NavigationPropertyBindings.Where(targetMapping => targetMapping.NavigationProperty == navigationProperty);
navigationPropertyBindingCache[navigationProperty] = navigationBindingList;
}

return navigationBindingList;
return EdmUtil.DictionaryGetOrUpdate(
this.navigationPropertyBindingCache,
navigationProperty,
property => this.NavigationPropertyBindings.Where(targetMapping => targetMapping.NavigationProperty == property).ToList());
}

return null;
Expand Down

0 comments on commit 04acc17

Please sign in to comment.