/// <summary>Gets the type name to be used in the URI for the given <paramref name="type"/>.</summary> /// <param name="type">Type to get name for.</param> /// <param name="context">Data context used to generate type names for types.</param> /// <returns>The name for the <paramref name="type"/>, suitable for including in a URI.</returns> internal static string GetTypeNameForUri(Type type, DataServiceContext context) { Debug.Assert(type != null, "type != null"); Debug.Assert(context != null, "context != null"); type = Nullable.GetUnderlyingType(type) ?? type; PrimitiveType pt; if (PrimitiveType.TryGetPrimitiveType(type, out pt)) { if (pt.HasReverseMapping) { return(pt.EdmTypeName); } else { // unsupported primitive type throw new NotSupportedException(Strings.ALinq_CantCastToUnsupportedPrimitive(type.Name)); } } else { return(context.ResolveNameFromTypeInternal(type) ?? ClientTypeUtil.GetServerDefinedTypeFullName(type)); } }
/// <summary>Gets the type name to be used in the URI for the given <paramref name="type"/>.</summary> /// <param name="type">Type to get name for.</param> /// <param name="context">Data context used to generate type names for types.</param> /// <param name="uriVersion">Data service version for the uri</param> /// <returns>The name for the <paramref name="type"/>, suitable for including in a URI.</returns> internal static string GetEntityTypeNameForUriAndValidateMaxProtocolVersion(Type type, DataServiceContext context, ref Version uriVersion) { Debug.Assert(type != null, "type != null"); Debug.Assert(context != null, "context != null"); if (context.MaxProtocolVersionAsVersion < Util.ODataVersion4) { throw new NotSupportedException(Strings.ALinq_TypeAsNotSupportedForMaxDataServiceVersionLessThan3); } if (!ClientTypeUtil.TypeOrElementTypeIsEntity(type)) { throw new NotSupportedException(Strings.ALinq_TypeAsArgumentNotEntityType(type.FullName)); } // Raise the uriVersion each time we write the type segment on the uri. WebUtil.RaiseVersion(ref uriVersion, Util.ODataVersion4); return(context.ResolveNameFromTypeInternal(type) ?? ClientTypeUtil.GetServerDefinedTypeFullName(type)); }