/// <summary> /// Create ODataContextUrlInfo from ODataFeedAndEntryTypeContext /// </summary> /// <param name="typeContext">The ODataFeedAndEntryTypeContext to be used.</param> /// <param name="isSingle">Whether target is single item.</param> /// <param name="odataUri">The odata uri info for current query.</param> /// <returns>The generated ODataContextUrlInfo.</returns> internal static ODataContextUrlInfo Create(ODataFeedAndEntryTypeContext typeContext, bool isSingle, ODataUri odataUri = null) { Debug.Assert(typeContext != null, "typeContext != null"); return(new ODataContextUrlInfo() { isContained = typeContext.NavigationSourceKind == EdmNavigationSourceKind.ContainedEntitySet, IsUnknownEntitySet = typeContext.NavigationSourceKind == EdmNavigationSourceKind.UnknownEntitySet, navigationSource = typeContext.NavigationSourceName, TypeCast = typeContext.NavigationSourceEntityTypeName == typeContext.ExpectedEntityTypeName ? null : typeContext.ExpectedEntityTypeName, TypeName = typeContext.NavigationSourceFullTypeName, IncludeFragmentItemSelector = isSingle && typeContext.NavigationSourceKind != EdmNavigationSourceKind.Singleton, odataUri = odataUri }); }
/// <summary> /// Create contextUrlInfo for delta /// </summary> /// <param name="typeContext">The ODataFeedAndEntryTypeContext to be used.</param> /// <param name="kind">The delta kind.</param> /// <param name="odataUri">The odata uri info for current query.</param> /// <returns>The generated ODataContextUrlInfo.</returns> internal static ODataContextUrlInfo Create(ODataFeedAndEntryTypeContext typeContext, ODataDeltaKind kind, ODataUri odataUri = null) { Debug.Assert(typeContext != null, "typeContext != null"); ODataContextUrlInfo contextUriInfo = new ODataContextUrlInfo() { isContained = typeContext.NavigationSourceKind == EdmNavigationSourceKind.ContainedEntitySet, navigationSource = typeContext.NavigationSourceName, TypeCast = typeContext.NavigationSourceEntityTypeName == typeContext.ExpectedEntityTypeName ? null : typeContext.ExpectedEntityTypeName, TypeName = typeContext.NavigationSourceEntityTypeName, IncludeFragmentItemSelector = kind == ODataDeltaKind.Entry && typeContext.NavigationSourceKind != EdmNavigationSourceKind.Singleton, DeltaKind = kind, }; // Only use odata uri in with model case. if (typeContext is ODataFeedAndEntryTypeContext.ODataFeedAndEntryTypeContextWithModel) { contextUriInfo.odataUri = odataUri; } return(contextUriInfo); }