示例#1
0
        private IEdmNavigationProperty AddDependentNavigation(EdmNavigationPropertyInfo edmDependentInfo, bool forceShadow)
        {
            IEdmNavigationProperty edmNavigationProperty = Microsoft.OData.Edm.EdmNavigationProperty.CreateNavigationProperty(DependentInfo.EdmType, edmDependentInfo);

            if (DependentNavigationProperty is OeShadowPropertyInfo || forceShadow)
            {
                if (DependentNavigationProperty == null)
                {
                    var shadowPropertyInfo = new OeShadowPropertyInfo(DependentInfo.ClrType, PrincipalInfo.ClrType, edmNavigationProperty.Name);
                    edmNavigationProperty = new OeEdmNavigationShadowProperty(edmNavigationProperty, shadowPropertyInfo);
                }
                else
                {
                    edmNavigationProperty = new OeEdmNavigationShadowProperty(edmNavigationProperty, DependentNavigationProperty);
                }
            }

            DependentInfo.EdmType.AddProperty(edmNavigationProperty);
            return(edmNavigationProperty);
        }
示例#2
0
        private IEdmNavigationProperty AddPrincipalNavigation(EdmNavigationPropertyInfo edmPrincipalInfo, bool forceShadow)
        {
            IEdmNavigationProperty edmNavigationProperty = Microsoft.OData.Edm.EdmNavigationProperty.CreateNavigationProperty(PrincipalInfo.EdmType, edmPrincipalInfo);

            if (PrincipalNavigationProperty is OeShadowPropertyInfo || forceShadow)
            {
                if (PrincipalNavigationProperty == null)
                {
                    Type propertyType       = edmNavigationProperty.Type.IsCollection() ? typeof(ICollection <>).MakeGenericType(DependentInfo.ClrType) : DependentInfo.ClrType;
                    var  shadowPropertyInfo = new OeShadowPropertyInfo(PrincipalInfo.ClrType, propertyType, edmNavigationProperty.Name);
                    edmNavigationProperty = new OeEdmNavigationShadowProperty(edmNavigationProperty, shadowPropertyInfo);
                }
                else
                {
                    edmNavigationProperty = new OeEdmNavigationShadowProperty(edmNavigationProperty, PrincipalNavigationProperty);
                }
            }

            PrincipalInfo.EdmType.AddProperty(edmNavigationProperty);
            return(edmNavigationProperty);
        }