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); }
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); }