private static void AddNavigationPropertyBindings( IModel efModel, INavigation navi, EdmEntityContainer container, IDictionary <IAnnotatable, IEdmElement> elementMap) { if (!navi.PointsToPrincipal()) { return; } var naviPair = new INavigation[] { navi, navi.FindInverse() }; for (var i = 0; i < 2; i++) { if (naviPair[i] == null) { continue; } var efEntityType = naviPair[i].DeclaringEntityType; if (!elementMap.ContainsKey(efEntityType)) { continue; } var entityType = elementMap[efEntityType] as IEdmEntityType; var navProperty = entityType.FindProperty(naviPair[i].Name) as IEdmNavigationProperty; if (navProperty == null) { continue; } var entitySet = (EdmEntitySet)container.EntitySets() .First(e => e.EntityType() == entityType); var targetEntitySet = container.EntitySets() .First(e => e.EntityType() == navProperty.ToEntityType()); entitySet.AddNavigationTarget(navProperty, targetEntitySet); } }