Example #1
0
            /// <summary>
            /// Part 2 of initialization - must be run after all wrapped EntitySets are initialized.
            /// </summary>
            public void WrapNavigationTargets(EdmEntityContainerWrapper container, Dictionary <string, EdmEntityTypeWrapper> fixedTypes)
            {
                var navigationMappings = new List <IEdmNavigationTargetMapping>();

                foreach (var innerNavigationMapping in _innerEntitySet.NavigationTargets)
                {
                    var innerDeclaringType = innerNavigationMapping.NavigationProperty.DeclaringType as IEdmEntityType;
                    EdmEntityTypeWrapper declaringType;
                    if ((innerDeclaringType != null) &&
                        (fixedTypes.TryGetValue(innerDeclaringType.FullName(), out declaringType)))
                    {
                        var propName             = innerNavigationMapping.NavigationProperty.Name;
                        var navigationProperty   = declaringType.DeclaredNavigationProperties().Single(navProp => navProp.Name == propName);
                        var innerTargetEntitySet = innerNavigationMapping.TargetEntitySet;
                        var targetEntitySet      = container.FindEntitySet(innerTargetEntitySet.Name);
                        navigationMappings.Add(new EdmNavigationTargetMapping(navigationProperty, targetEntitySet));
                    }
                    else
                    {
                        throw new InvalidOperationException("IEdmNavigationTargetMapping could not be initialized for " + innerNavigationMapping.NavigationProperty.Name
                                                            + " - perhaps we don't have correct support for complex types?");
                    }
                }
                _navigationTargetMappings = navigationMappings.ToArray();
            }
Example #2
0
            public EdmEntitySetWrapper(IEdmEntitySet innerEntitySet,
                                       EdmEntityContainerWrapper container,
                                       EdmEntityTypeWrapper elementType)
            {
                Contract.Requires <ArgumentNullException>(innerEntitySet != null);
                Contract.Requires <ArgumentNullException>(container != null);
                Contract.Requires <ArgumentNullException>(elementType != null);

                _innerEntitySet = innerEntitySet;
                _container      = container;
                _elementType    = elementType;
            }
Example #3
0
        private void FixUpEntityContainers()
        {
            foreach (var efEntityContainer in _dbContextEdmModel.SchemaElements.OfType <IEdmEntityContainer>())
            {
                EdmEntityContainerWrapper containerWrapper = new EdmEntityContainerWrapper(efEntityContainer, _fixedTypes);
                _fixedContainers.Add(containerWrapper.Name, containerWrapper);
            }

            // Fixup the NavigationMappings
            foreach (var containerWrapper in _fixedContainers.Values)
            {
                foreach (var entitySetWrapper in containerWrapper.EntitySetWrappers)
                {
                    entitySetWrapper.WrapNavigationTargets(containerWrapper, _fixedTypes);
                }
            }
        }
Example #4
0
        private bool TryGetEntityContainerWrapperForFixedEntityContainer(IEdmEntityContainer fixedEntityContainer, out EdmEntityContainerWrapper entityContainerWrapper)
        {
            if (fixedEntityContainer != null)
            {
                return(_fixedContainers.TryGetValue(fixedEntityContainer.Name, out entityContainerWrapper));
            }

            entityContainerWrapper = null;
            return(false);
        }