Example #1
0
        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);
            }
        }