Microsoft.Data.Services Utilities needed by which are relatively simple and standalone. Suffix for single literals. Suffix for single literals. Whether the specified token identifier is a numeric literal. Token to check. true if it's a numeric literal; false otherwise. Checks if the is INF or NaN. Internal for testing only. Input token. true if match found, false otherwise. Checks whether equals to 'INF' Internal for testing only Text to look in. true if the substring is equal using an ordinal comparison; false otherwise. Checks if the is INFf/INFF or NaNf/NaNF. Internal for testing only. Input token. true if match found, false otherwise. Checks whether EQUALS to 'INFf' or 'INFF'. Internal for testing only. Text to look in. true if the substring is equal using an ordinal comparison; false otherwise. Shared JSON util code for ODataLib and Server. Determines if the given double is serialized as a string in JSON. The value to check. true if the value should be written as a string, false if should be written as a JSON number. Determines if the given primitive value is of a basic type where we can rely on just the JSON representation to convey type information. If so, we don't have to write the type name. The primitive value in question. The type of the primitive value. true if the given primitive value is of a basic JSON type, false otherwise. Class with utility methods to deal with values in ODataLib. Converts an object to an ODataValue. If the given object is already an ODataValue (such as an ODataCompleValue, ODataCollectionValue, etc.), the original object will be returned. The object to convert to an ODataValue The given object as an ODataValue. Converts an ODataValue to the old style of representing values, where null values are null and primitive values are just the direct primitive (no longer wrapped by ODataPrimitiveValue). All other value types, such as ODataComplexValue and ODataCollectionValue are returned unchanged. The value to convert. The value behind the given ODataValue. A simple implementation of LazyOfT since the framework version is not available in all platforms we compile this code in... Type to lazy create. For thread safty in creating the value. The factory method to create the lazy instance. Holds the lazy instance to create. true if the factory method has been called, false otherwise. Creates an instance of ODataLazyOfT. The factory method to create the lazy instance. Creates an instance of ODataLazyOfT. The factory method to create the lazy instance. true if the value will be created in a thread safety, false assume single thread access to Value. Creates the value. Creates the value if it hasn't already been created and returns the created value. base vistor class for walking an expression tree bottom up. Main visit method for ALinqExpressionVisitor The expression to visit The visited expression MemberBinding visit method The MemberBinding expression to visit The visited MemberBinding expression ElementInit visit method The ElementInit expression to visit The visited ElementInit expression UnaryExpression visit method The UnaryExpression expression to visit The visited UnaryExpression expression BinaryExpression visit method The BinaryExpression expression to visit The visited BinaryExpression expression TypeBinaryExpression visit method The TypeBinaryExpression expression to visit The visited TypeBinaryExpression expression ConstantExpression visit method The ConstantExpression expression to visit The visited ConstantExpression expression ConditionalExpression visit method The ConditionalExpression expression to visit The visited ConditionalExpression expression ParameterExpression visit method The ParameterExpression expression to visit The visited ParameterExpression expression MemberExpression visit method The MemberExpression expression to visit The visited MemberExpression expression MethodCallExpression visit method The MethodCallExpression expression to visit The visited MethodCallExpression expression Expression list visit method The expression list to visit The visited expression list MemberAssignment visit method The MemberAssignment to visit The visited MemberAssignmentt MemberMemberBinding visit method The MemberMemberBinding to visit The visited MemberMemberBinding MemberListBinding visit method The MemberListBinding to visit The visited MemberListBinding Binding List visit method The Binding list to visit The visited Binding list ElementInit expression list visit method The ElementInit expression list to visit The visited ElementInit expression list LambdaExpression visit method The LambdaExpression to visit The visited LambdaExpression NewExpression visit method The NewExpression to visit The visited NewExpression MemberInitExpression visit method The MemberInitExpression to visit The visited MemberInitExpression ListInitExpression visit method The ListInitExpression to visit The visited ListInitExpression NewArrayExpression visit method The NewArrayExpression to visit The visited NewArrayExpression InvocationExpression visit method The InvocationExpression to visit The visited InvocationExpression Provides an expression visitor that can replace a . Expression to replace with. Parameter to replace. Initializes a new instance. Parameter to replace. Expression to replace with. Replaces the occurences of for in . Expression to perform replacement on. Parameter to replace. Expression to replace with. A new expression with the replacement performed. ParameterExpression visit method. The ParameterExpression expression to visit The visited ParameterExpression expression Equality comparer implementation that uses reference equality. Initializes a new instance. Determines whether two objects are the same. First object to compare. Second object to compare. true if both are the same; false otherwise. Serves as hashing function for collections. Object to hash. Hash code for the object; shouldn't change through the lifetime of . Use this class to compare objects by reference in collections such as dictionary or hashsets. Type of objects to compare. Typically accesses statically as eg ReferenceEqualityComparer<Expression>.Instance. Single instance per 'T' for comparison. Initializes a new instance. Determines whether two objects are the same. First object to compare. Second object to compare. true if both are the same; false otherwise. Serves as hashing function for collections. Object to hash. Hash code for the object; shouldn't change through the lifetime of . Returns a singleton instance for this comparer type. static utility functions for uris Turn Uri instance into string representation This is needed because Uri.ToString unescapes the string The uri instance The string representation of the uri Read the identifier from the uri segment value One of the segments as returned by Uri.Segments method. The segment identifier after stripping the last '/' character and unescaping the identifier. is the serviceRoot the base of the request uri baseUriWithSlash requestUri true if the serviceRoot is the base of the request uri Determines whether the Uri instance is a base of the specified Uri instance. Candidate base URI. The specified Uri instance to test. true if the current Uri instance is a base of uri; otherwise, false. Creates a URI suitable for host-agnostic comparison purposes. URI to compare. URI suitable for comparison. Common defintions and functions for the server and client lib Common defintions and functions for ALL product assemblies List of types unsupported by the client Test whether a type is unsupported by the client lib The type to test Returns true if the type is not supported Returns collection item type name or null if the provided type name is not a collection. Collection type name read from payload. Whether it is a nested (recursive) call. Collection element type name or null if not a collection. The following rules are used for collection type names: - it has to start with "Collection(" and end with ")" - trailing and leading whitespaces make the type not to be recognized as collection. - there is to be no characters (including whitespaces) between "Collection" and "(" - otherwise it won't be recognized as collection - collection item type name has to be a non-empty string - i.e. "Collection()" won't be recognized as collection - nested collection - e.g. "Collection(Collection(Edm.Int32))" - are not supported - we will throw Note the following are examples of valid type names which are not collection: - "Collection()" - " Collection(Edm.Int32)" - "Collection (Edm.Int32)" - "Collection(" If the type name is not recognized as a collection it will be eventually passed to type resolver if it is not a known primitive type. checks whether the given xml reader element is empty or not. This method reads over the start tag and if this returns false, one needs to throw an appropriate exception reader instance. true if the current element is empty. Otherwise false. Convert the DataServiceProtocolVersion to ODataVersion. DataServiceProtocolVersion value to convert. an ODataVersion value for the given DataServiceProtocolVersion value. Converts the given version instance to ODataVersion enum. Version instance containing the response payload. ODataVersion enum value for the given version. Gets the type name (without namespace) of the specified , appropriate as an externally-visible type name. Type to get name for. The type name for . Gets the type namespace of the specified , appropriate as an externally-visible type name. Type to get namespace for. The namespace for . Tries to read a WCF Data Service version string. Text to read. Parsed version and trailing text. true if the version was read successfully; false otherwise. Set the message quota limits for WCF Data services server. Instance of ODataMessageQuotas. Type of OutOfMemoryException. Type of StackOverflowException. Type of ThreadAbortException. Determines whether the specified exception can be caught and handled, or whether it should be allowed to continue unwinding. to test. true if the specified exception can be caught and handled; false otherwise. Constant values related to the ATOM format. 'http://www.w3.org/2000/xmlns/' - namespace for namespace declarations. Attribute use to add xml: namespaces specific attributes. Schema Namespace prefix For xmlns. Schema Namespace prefix For xml. XML attribute value to indicate the base URI for a document or element. Name of the xml:lang attribute. Name of the xml:space attribute. 'preserve' value for the xml:space attribute. XML namespace for data service annotations. XML namespace prefix for data service annotations. XML namespace for data services. Prefix for data services namespace. OData attribute which indicates the etag value for the declaring entry element. OData attribute which indicates the null value for the element. OData element name for the 'count' element OData scheme namespace for data services category scheme in atom:category elements. OData stream property 'mediaresource' Uri segment name used in named stream link relations. OData stream property 'edit-media' Uri segment name used in named stream link relations. OData stream property prefix for named stream 'mediaresource' related link relations. OData stream property prefix for named stream 'edit-media' related link relations. OData navigation properties 'related' Uri segment name used in navigation link relations. OData navigation properties prefix for navigation link relations. OData navigation properties 'relatedlinks' Uri segment name used in association link relations. OData association link prefix for relation attribute. 'Inline' - wrapping element for inlined entry/feed content. Name of the error element for Xml error responses. Name of the error code element for Xml error responses. Name of the error message element for Xml error responses. Name of the inner error message element for Xml error responses. Name of the message element in inner errors for Xml error responses. Name of the type element in inner errors for Xml error responses. Name of the stack trace element in inner errors for Xml error responses. Name of the inner error element nested in inner errors for Xml error responses. Element name for the items in a collection. Element name for m:action. Element name for m:function. Attribute name for m:action|m:function/@metadata. Attribute name for m:action|m:function/@title. Attribute name for m:action|m:function/@target. XML element name for the wrapper 'links' element around a sequence of Uris in response to a $links request. XML element name for a Uri response to a $links request. XML element name for a next link in a response to a $links request. XML element name for an annotation in an ATOM payload. Attribute name for m:annotation/@target. Attribute name for m:annotation/@term. Attribute name for m:annotation/@string. Attribute name for m:annotation/@bool. Attribute name for m:annotation/@decimal. Attribute name for m:annotation/@int. Attribute name for m:annotation/@float. Schema namespace for Atom. Prefix for the Atom namespace - empty since it is the default namespace. Prefix for the Atom namespace used in cases where we need a non-empty prefix. XML element name to mark entry element in Atom. XML element name to mark feed element in Atom. XML element name to mark content element in Atom. XML element name to mark type attribute in Atom. Element containing property values when 'content' is used for media link entries XML element name to mark id element in Atom. XML element name to mark title element in Atom. XML element name to mark the subtitle element in Atom. XML element name to mark the summary element in Atom. XML element name to mark the 'published' element in Atom. XML element name to mark the 'source' element in Atom. XML element name to mark the 'rights' element in Atom. XML element name to mark the 'logo' element in Atom. XML element name to mark the 'author' element in Atom. XML element name to mark the 'author name' element in Atom. XML element name to mark the 'contributor' element in Atom. XML element name to mark the 'generator' element in Atom. XML attribute name of the 'uri' attribute of a 'generator' element in Atom. XML attribute name of the 'version' attribute of a 'generator' element in Atom. XML element name to mark the 'icon' element in Atom. XML element name to mark the 'name' element in an Atom person construct. XML element name to mark the 'uri' element in an Atom person construct. XML element name to mark the 'email' element in an Atom person construct. 'updated' - XML element name for ATOM 'updated' element for entries. 'category' - XML element name for ATOM 'category' element for entries. 'term' - XML attribute name for ATOM 'term' attribute for categories. 'scheme' - XML attribute name for ATOM 'scheme' attribute for categories. 'scheme' - XML attribute name for ATOM 'label' attribute for categories. Atom link relation attribute value for edit links. Atom link relation attribute value for self links. XML element name to mark link element in Atom. XML attribute name of the link relation attribute in Atom. XML attribute name of the type attribute of a link in Atom. XML attribute name of the href attribute of a link in Atom. XML attribute name of the hreflang attribute of a link in Atom. XML attribute name of the title attribute of a link in Atom. XML attribute name of the length attribute of a link in Atom. XML element name to mark href attribute element in Atom. Atom source attribute name for the content of media link entries. Atom link relation attribute value for edit-media links. XML attribute value of the link relation attribute for next page links in Atom. XML attribute value of the link relation attribute for delta links in Atom. Link relation: alternate - refers to a substitute for this context. Link relation: related - identifies a related resource. Link relation: enclosure - identifies a related resource that is potentially large and might require special handling. Link relation: via - identifies a resource that is the source of the information in the link's context. Link relation: describedby - refers to a resource providing information about the link's context. Link relation: service - indicates a URI that can be used to retrieve a service document. Atom metadata text construct kind: plain text Atom metadata text construct kind: html Atom metadata text construct kind: xhtml Default title for service document workspaces. 'true' literal 'false' literal IANA link relations namespace. The Atom Publishing Protocol (APP) namespace: 'http://www.w3.org/2007/app'. The name of the top-level 'service' element when writing service documents in Xml format. The name of the 'workspace' element when writing service documents in Xml format. The name of the 'collection' element when writing service documents in Xml format. The name of the 'categories' element encountered while reading a service document in XML format. The name of the 'accept' element encountered while reading a service document in XML format. The name of the 'fixed' attribute of an inline categories element in APP. The value 'yes' of the 'fixed' attribute of an inline categories element in APP. The value 'no' of the 'fixed' attribute of an inline categories element in APP. XML namespace for GeoRss format XML namespace prefix for GeoRss format XML namespace for GML format XML namespace prefix for GML format Class with utility methods to help with debug only code. Checks that the method which called this helper method was not called by any code outside of the Microsoft.Data.OData.dll. The method is only called when in DEBUG builds, since it's quite expensive and we expect all our external callers to run DEBUG builds at least sometimes. The method is also called when compiling for FxCop analysis, as we run our official FxCop pass on RET build and we need to check that all internal methods call this one to check for accessibility even though only in debug builds. Checks that the method which called this helper method was not called by any code outside of the Microsoft.Data.OData.dll. Set to true if this check is called from a public method which should also be checked for non-external callers. In that case, make sure that the calling method will not get inlined! The method is only called when in DEBUG builds, since it's quite expensive and we expect all our external callers to run DEBUG builds at least sometimes. The method is also called when compiling for FxCop analysis, as we run our official FxCop pass on RET build and we need to check that all internal methods call this one to check for accessibility even though only in debug builds. Utility methods serializing the xml error payload Default language for error messages if not specified. This constant is included here since this file is compiled into WCF DS Server as well so we can't compile in the ODataConstants. Extracts error details from an . The ODataError instance to extract the error details from. A data service-defined string which serves as a substatus to the HTTP response code. A human readable message describing the error. The language identifier representing the language the error message is in. Write an error message. The Xml writer to write to. The error instance to write. A flag indicating whether error details should be written (in debug mode only) or not. The maximumum number of nested inner errors to allow. Write an error message. The Xml writer to write to. The code of the error. The message of the error. The language of the message. Inner error details that will be included in debug mode (if present). The maximumum number of nested inner errors to allow. Writes the inner exception information in debug mode. The Xml writer to write to. The inner error to write. The local name of the element representing the inner error. The number of times this method has been called recursively. The maximumum number of nested inner errors to allow. Class with code that will eventually live in EdmLib. This class should go away completely when the EdmLib integration is fully done. The qualifier to turn a type name into a Collection type name. Format string to describe a Collection of a given type. Map of CLR primitive type to EDM primitive type reference. Doesn't include spatial types since they need assignability and not equality. Type reference for Edm.Boolean. Type reference for Edm.Byte. Type reference for Edm.DateTime. Type reference for Edm.Decimal. Type reference for Edm.Double. Type reference for Edm.Int16. Type reference for Edm.Int32. Type reference for Edm.Int64. Type reference for Edm.SByte. Type reference for Edm.String. Type reference for Edm.Float. Constructor. Gets the full name of the definition referred to by the type reference. The type reference to get the full name for. The full name of this . Note that this method is different from the EdmLib FullName extension method in that it also returns names for collection types. For EdmLib, collection types are functions and thus don't have a full name. The name/string they use in CSDL is just shorthand for them. Gets the full name of the type. The type to get the full name for. The full name of the . Note that this method is different from the EdmLib FullName extension method in that it also returns names for collection types. For EdmLib, collection types are functions and thus don't have a full name. The name/string they use in CSDL is just shorthand for them. Clones the specified type reference. The type reference to clone. true to make the cloned type reference nullable; false to make it non-nullable. The cloned instance. Returns the fully qualified name of an entity container element. The container element to get the full name for. The full name of the owning entity container, slash, name of the container element. Returns the primitive type reference for the given Clr type. The Clr type to resolve. The primitive type reference for the given Clr type. Turns a into the corresponding . The type to convert. true if the returned type reference should be nullable; otherwise false. A type reference for the . Creates the EDM type name for a collection of the specified item type name. E.g. Collection(Edm.String) Type name of the items in the collection. Type name for a collection of the specified item type name. Finds the entity set with the specified container and name. The model to find the entity set in. The container qualified name of the entity set. The with the specified name or null if no such entity set exists. Finds the function import group with the specified container and name. If the name contains the function parameters, this method will return the function import with matching parameters. The model to find the function import in. The container qualified name of the function import. The group with the specified name or null if no such function import exists. Finds the function import group with the specified container and name. If the name contains the function parameters, this method will return the function import with matching parameters. The model to find the function import in. The container qualified name of the function import. May contain parameter type names, e.g. Function1(P1Type,P2Type) only if is true. Whether parameter type names are allowed to appear in the function import name to resolve. The group with the specified name or null if no such function import exists. Resolves a function import or function import group. The entity container. The function import name to resolve. May contain parameter type names, e.g. Function1(P1Type,P2Type) The resolved function import or function import group. Resolves a function import or function import group. The entity container. The function import name to resolve. May contain parameter type names, e.g. Function1(P1Type,P2Type) only if is true. Whether parameter type names are allowed to appear in the function import name to resolve. The resolved function import or function import group. Finds all function imports with the given name which are bindable to an instance of the giving binding type or a more derived type. The model to find the function import in. The binding entity type. The name of the function imports to find. May be qualified with an entity container name. The function imports that match the search criteria. Finds all function imports with the given name which are bindable to an instance of the giving binding type or a more derived type. The model to find the function import in. The binding entity type. The name of the function imports to find. May be qualified with an entity container name. The function imports that match the search criteria. Returns the primitive CLR type for the specified primitive type reference. The primitive type to resolve. Whether the returned type should be a nullable variant or not. The CLR type for the primitive type reference. Gets a reference to a primitive kind definition of the appropriate kind. Primitive type to create a reference for. Flag specifying if the referenced type should be nullable per default. A new primitive type reference. Gets the single entity container or the default one if there are multiple containers. Model to find entity containers in. Single container that was found. Entity Container found in the model Finds the container elements with the specified container and name. The model to find the element in. The container qualified name of the elements. The resolver method to resolve the elements. The enumeration of with the specified name or null if no such element exists. An enumeration that lists the internal errors that are shared between the OData library and the query library. Unreachable codepath in EdmLibraryExtensions.ToTypeReference (unsupported type kind). Unreachable codepath in EdmLibraryExtensions.ToClrType (unsupported type kind). Unreachable codepath in EdmLibraryExtensions.PrimitiveTypeReference (unsupported primitive type kind). Unreachable codepath in EdmLibraryExtensions.IsAssignableFrom(IEdmPrimitiveType, IEdmPrimitiveType). Unreachable codepath in EdmLibraryExtensions.IsAssignableFrom(IEdmType, IEdmType). Unreachable codepath in EdmLibraryExtensions.BaseType. Unreachable codepath in EdmLibraryExtensions.Clone for unexpected type kind. Unreachable codepath in EdmLibraryExtensions.Clone for unexpected primitive type kind. Static configuration that is initialized one time per service type and then cached. A lookup of resource sets to the corresponding QueryInterceptors. For IDSP there is no guarantee that the provider will always return the same metadata instance. We should use the name instead of the instance as key since the configuration is cached across requests. A lookup of resource sets to the corresponding ChangeInterceptors. For IDSP there is no guarantee that the provider will always return the same metadata instance. We should use the name instead of the instance as key since the configuration is cached across requests. The provider for the web service. Constructors the static configuration object which can be cached for the whole AppDomain lifecycle. Service type. Metadata provider instance. Returns the list of QueryInterceptors for the given resource set resource set instance List of QueryInterceptors for the resource set, null if there is none defined for the resource set. Returns the list of ChangeInterceptors for the given resource set resource set instance List of ChangeInterceptors for the resource set, null if there is none defined for the resource set. Checks that the specified has a correct signature. Service type. Method to check. Container associated with the interceptor. Verifies that the specified is not an [out] parameter. Method with parameter to check. Parameter to check. Register authorization callbacks specified on the given . Type of web data service to check. Loads settings defined in the configuration file. Cached copy of DataServicesFeaturesSection. Semantic parser for the path of the request URI. The provider wrapper to use for looking up types/sets, etc. A callback to get cross-referenced segments (ie '$0') when inside a batch request changeset. The max protocol version of the service. Initializes a new instance of . The max protocol version of the service. The provider wrapper to use for looking up types/sets, etc. A callback to get cross-referenced segments (ie '$0') when inside a batch request changeset. Creates a new for the given data service. The data service. A new path parsers. Creates an list for the given . Segments to process. Segment information describing the given . Creates a segment for a service operation The service operation for the segment. A fully populated PathSegment representing the service operation Throws if the given segment must be a leaf, as a later segment is being created. The previous segment which may need to be a leaf. Checks that the previous segment can be composed upon. previous segment info. Determines if the previous segment can be composed upon. previous segment info. true if the segment can be composed upon; otherwise, false. Handle $count segment previous segment info. The count segment info Handle $links segment previous segment info. The links segment info Create a $value segment previous segment info. new segement info for $value. Creates a new segment for an open property. previous segment info. name of the segment. new open property segment. Creates a named stream segment previous segment info. stream property to create the segment for. new named stream segment. Determines a matching target kind from the specified type. ResourceType of element to get kind for. An appropriate for the specified . Checks for single result, otherwise throws. indicates whether the current result is single result or not. current segment identifier. Tries to get the resource property for the given segment, if it is one of the segment types that refers to a property, a navigation, or a navigation after $links. The segment. The property, if the segment represented a property or navigation. Whether the segment represented a property or navigation. Creates the first for a request. The text of the segment. A description of the information on the segment. Creates a segment for the given service action. The previous segment before the operation to be invoked. The service action to create the segment for. A fully populated PathSegment representing the service action Creates the next segment. The previous segment. The the next segment. The newly created next segment. Tries to create a type name segment if the given identifier refers to a known type. previous segment info. The segment being interpreted. The type name segment, if one was created. Whether or not a type segment was created for the identifier. Creates a property segment previous segment info. property to create the segment for. new segment for the given property. Component for building LINQ expressions for skip-tokens. The node to expression translator to use. Initializes a new instance of . The node to expression translator to use Parse one of the literals of skip token. Input literal. Object resulting from conversion of literal. Makes the expression that is used as a filter corresponding to skip token. Ordering expression. The provided skip token. The parameter type of the lambda. LambdaExpression corresponding to the skip token filter. Generates a comparison expression which can handle NULL values for any type. NULL is always treated as the smallest possible value. So for example for strings NULL is smaller than any non-NULL string. For now only GreaterThan and LessThan operators are supported by this method. Left hand side expression Right hand side expression gt or lt operator token Resulting comparison expression (has a Boolean value) Generates a comparison expression. The left side of the comparison. The right side of the comparison. The comparison operator. A comparison expression. Utility class for creating instances . Tries to create a for the given token if it represents a literal. The token. The node, if one was created. Whether or not the token represented a literal. Parses the given token into a constant node of the given target type. The tarket type. The target type name. The token to parse. The parsed constant node. Component for translating a tree of nodes representing an OData query into a LINQ expression. Dictionary of system functions. Method info for string comparison Method info for Bool comparison Method info for Bool? comparison Method info for Guid comparison Method info for Guid? comparison The function expression binder for checking/promoting operands. The current data service behavior. The service instance. Whether null propagation is required. Expression to use for the implicit '$it' parameter in function calls. Callback to verify that the service's max protocol version is greather than or equal to the version required for a specific feature. Callback to verify that the request's version is greather than or equal to the version required for a specific feature. Initializes a new instance of . The function expression binder for checking/promoting operands. The data service behavior from the service's configuration. The data service instance. Whether null propagation is required. Expression to use for the implicit '$it' parameter in function calls. Callback to verify that the service's max protocol version is greather than or equal to the version required for a specific feature. Callback to verify that the request's version is greather than or equal to the version required for a specific feature. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Creates a new instance of . The function expression binder for checking/promoting operands. The data service behavior from the service's configuration. The data service instance. Whether null propagation is required. Expression to use for the implicit '$it' parameter in function calls. Callback to verify that the service's max protocol version is greather than or equal to the version required for a specific feature. Callback to verify that the request's version is greather than or equal to the version required for a specific feature. The new translator. Creates a new instance of . The data service. The current request description. Expression to use for the implicit '$it' parameter in function calls. The new translator. Translates a into a . The filter clause to translate. The translated expression. Translates a into a set of . The order-by clause to translate. The translated expressions. Main dispatching visit method for translating query-nodes into expressions. The node to visit/translate. The LINQ expression resulting from visiting the node. Given left and right hand side expressions, generates a comparison expression based on the given comparison token The operator kind of the comparison. The left side of the comparison. The right side of the comparison. Resulting comparison expression Gets the public base type for a given spatial value The spatial instance value for which we want to find the public type. The public spatial base type for the instance value. Returns whether the operator kind represents a logical operator. The operator kind. True for logical operators (And/Or); false for everything else. Creates an exception indicated that two operands are incompatible. Kind of operation for operands. Expression for left-hand operand. Expression for right-hand operand. A new . Translates a into a corresponding . The node to translate. The already-translated source of the type cast. The translated expression. Helper for translating an access to a metadata-defined property or navigation. The source of the property access. The structural or navigation property being accessed. The entity set of the result, required for navigations. The translated expression. Translates a function call into a corresponding . Name of the function. The argument nodes. The translated expression. Translates a into a corresponding . The node to translate. The translated expression. Convert null collection to empty collection for Any/All/OfType methods. An IEnumerable expression. An expression that checks for null. Component for binding functions into LINQ expressions. A type that is not numeric. A type that is a char, single, double or decimal. A type that is a signed integral. A type that is an unsigned integral. Callback to resolve a resource type by name. A mapping from constant expressions back to their original string value in case they need to be converted. Initializes a new instance of . Callback to resolve a resource type by name. Finds the best fitting function for the specified arguments. Functions to consider. Arguments; if a best function is found, promoted arguments. The best fitting function; null if none found or ambiguous. Checks that the operand (possibly promoted) is valid for the specified operation. Type with signatures to match. Kind of operation for error reporting. Expression for operand. Checks that the operands (possibly promoted) are valid for the specified operation. Type with signatures to match. Kind of operation for error reporting. Expression for left operand. Expression for right operand. Tracks the literals original text for use in converting it's type during method call binding. The literal's constant expression. The original text of the literal. Checks whether the specified type is a signed integral type. Type to check. true if is a signed integral type; false otherwise. Checks whether the specified type is an unsigned integral type. Type to check. true if is an unsigned integral type; false otherwise. Gets a flag for the numeric kind of type. Type to get numeric kind for. One of NumericTypeNotNumeric; NumericTypeNotIntegral if it's char, single, double or decimal; NumericTypeSignedIntegral, or NumericTypeUnsignedIntegral. Returns an object that can enumerate the specified type and its supertypes. Type to based enumeration on. An object that can enumerate the specified type and its supertypes. Returns an object that can enumerate the specified type and its supertypes. Type to based enumeration on. An object that can enumerate the specified type and its supertypes. Adds an interface type to a list of types, including inherited interfaces. Types list ot add to. Interface type to add. Finds the best applicable methods from the specified array that match the arguments. Candidate methods. Argument expressions. Best applicable methods. Parses the specified text into a number. Text to parse. Type to parse into. The parsed number. Checks whether the source type is compatible with the value type. Source type. Target type. true if source can be used in place of target; false otherwise. Checks whether one type list is a better fit than other for the specified expressions. Expressions for arguments. First type list to check. Second type list to check. true if has better parameter matching than . Checks whether one method is a better fit than other for the specified expressions. Expressions for arguments. First method to check. Second method to check. true if has better parameter matching than . Checks which conversion is better. Source type. First candidate type to convert to. Second candidate type to convert to. Return 1 if s -> t1 is a better conversion than s -> t2 Return -1 if s -> t2 is a better conversion than s -> t1 Return 0 if neither conversion is better Finds the named method in the specifid type. Type to look in. Name of method to look for. Arguments to method. Best method found. Number of matching methods. Finds all applicable methods from the specified enumeration that match the arguments. Enumerable object of candidate methods. Argument expressions. Methods that apply to the specified arguments. Finds the best methods for the specified arguments given a candidate method enumeration. Enumerable object for candidate methods. Argument expressions to match. Best matched method. The number of "best match" methods. Checks whether the specified method is applicable given the argument expressions. Method to check. Argument expressions. true if the method is applicable; false otherwise. Promotes the specified expression to the given type if necessary. Expression to promote. Type to change expression to. Whether an exact type is required; false implies a compatible type is OK. Expression with the promoted type. Use this class to encapsulate method information. Described method. Parameters for method. Argument expressions. Initializes a new instance. Described method Parameters for method. Argument expressions. Described method. Parameters for method. Enumeration of parameter types. LINQ extension methods that are not provided by .NET itself. Creates a new hash-set from the given enumerable. The type of the elements. The elements to put in the hash-set. The comparer for the hash-set to use. A new hash-set with the given elements and comparer. Filters the given elements to only return the elements that appear more than once. Will return them in the order of their second appearance. If items appear 3 or more times in the original set, they will appear multiple times in the result. The type of the elemenens. The elements filter for duplicates. The comparer to use for determining whether an element is a duplicate of an earlier item. The set of elements that appear in the original set more than once. May contain duplicates itself. Component for building up LINQ expressions as part of URI parsing. Method info for byte array comparison. Method info for byte array comparison. Generates an Equal expression. Left expression. Right expression. The generated expression. Generates a NotEqual expression. Left expression. Right expression. The generated expression. Generates a GreaterThan comparison expression. Left expression. Right expression. MethodInfo for comparison method used for string, bool, guid types The generated expression. Generates a GreaterThanOrEqual comparsion expression. Left expression. Right expression. MethodInfo for comparison method used for string, bool, guid types The generated expression. Generates a LessThan comparsion expression. Left expression. Right expression. MethodInfo for comparison method used for string, bool, guid types The generated expression. Generates a LessThanOrEqual comparsion expression. Left expression. Right expression. MethodInfo for comparison method used for string, bool, guid types The generated expression. Generates an addition expression. Left expression. Right expression. The generated expression. Generates a subtract expression. Left expression. Right expression. The generated expression. Generates a multiplication expression. Left expression. Right expression. The generated expression. Generates a negative of expression. Input expression. The generated expression. Generates a not of expression. Input expression. The generated expression. Generates a divide expression. Left expression. Right expression. The generated expression. Generates a modulo expression. Left expression. Right expression. The generated expression. Generates a logical And expression. Left expression. Right expression. The generated expression. Generates a Logical Or expression. Left expression. Right expression. The generated expression. Generate TypeAs expression over the given instance expression. base expression. resource type to which the as checks needs to be performed on. TypeAs expression over the given instance expression. Filters the elements of based on source targetResourceType An expression for IEnumerable(Of T) that contains elements from the source sequence of type . Use this class to parse an expression in the Astoria URI format. Provider of data and metadata. The expression text to parse. The service's metadata-provider-based edm-model. The target resource type or null. The target resource set or null. Initializes a new . Service with data and configuration. RequestDescription instance containing information about the current request being parsed. Expression to parse. Parses the text expression for $filter. The parsed filter clause. Parses the text expression for ordering. An orderby clause. Argument class whose instance is passed for constructing a ReflectionDataServiceProvider or EntityFrameworkDataServiceProvider instance. Creates an instance of . Required instance of data service object. Required instance of data source object. Optional collection of known types. Whether metadata key order is to be used instead of default service defined key order. Instance of the data service. Instance of the data source. Collection of known types. Whether metadata defined ordering is to be used instead of service defined ordering. Whether to load service operations on the service. Set to false by default. Default implementation of IDataServiceProviderBehavior interface. Used by the service writer to define the behavior of the providers. Instance of provider behavior that defines the assumptions service should make about the provider. Cached custom provider behavior instance. Constructs the default DataServiceProviderBehavior using the given behavior information. Provider behavior information. Checks whether provider behaves like EntityFramework or Reflection service providers. Provider behavior. true if EntityFramework or Reflection provider behavior, false otherwise. Checks whether provider behaves like EntityFramework provider. Provider behavior. true if EntityFramework provider. Checks whether provider behaves like Reflection provider. Provider behavior. true if Reflection provider. Gets the ProviderBehavior instance obtained from IDataServiceProviderBehavior interface. IDataServiceProviderBehavior interface implementation. ProviderBehavior instance. ProviderBehavior information. Default behavior object for custom providers. An implementation that supports delay-loading of properties. The lock object for the delayed property loading. An action that is used to create the properties for this type. Initializes a new instance of the EdmComplexTypeWithDelayLoadedProperties class. Namespace the entity belongs to. Name of the entity. The base type of this entity type. Denotes an entity that cannot be instantiated. An action that is used to create the properties for this type. Ensures that the properties have been loaded and can be used. Gets the properties declared immediately within this type. An implementation that supports delay-loading of properties. The lock object for the delayed property loading. An action that is used to create the properties for this type. Initializes a new instance of the EdmEntityTypeWithDelayLoadedProperties class. Namespace the entity belongs to. Name of the entity. The base type of this entity type. Denotes an entity that cannot be instantiated. Denotes if the type is open. An action that is used to create the properties for this type. Ensures that the properties have been loaded and can be used. Gets or sets the structural properties of the entity type that make up the entity key. Gets the properties declared immediately within this type. Entity Framework based provider. Provides a metadata and query source abstraction for a web data service's store. Tries to get a resource set based on the specified name. true when resource set with the given is found; otherwise false. Name of the to resolve. Returns the resource set or a null value if a resource set with the given is not found. Gets the instance when given the source association end. A instance. Resource set of the source association end. Resource type of the source association end. Resource property of the source association end. Tries to get a resource type based on the specified name. true when resource type with the given is found; otherwise false. Name of the type to resolve. Returns the resource type or a null value if a resource type with the given is not found. Attempts to return all types that derive from the specified resource type. An collection of derived objects. The base . The method must return a collection of all the types derived from . The collection returned should NOT include the type passed in as a parameter. An implementer of the interface should return null if the type does not have any derived types (ie. null == no derived types). Determines whether a resource type has derived types. true when represents an entity that has derived types; otherwise false. A object to evaluate. Tries to get a service operation based on the specified name. true when service operation with the given is found; otherwise false. Name of the service operation to resolve. Returns the service operation or a null value if a service operation with the given is not found. Namespace name for the data source. String that contains the namespace name. Container name for the data source. String that contains the name of the container. Gets all available containers. An collection of objects. Returns all the types in this data source. An collection of objects. Returns all the service operations in this data source. An collection of objects. Provides a metadata and query source abstraction for a web data service's store. Gets the that represents the container. An that represents the resource set, or a null value if there is no resource set for the specified . The resource set. Gets the resource type for the instance that is specified by the parameter. The of the supplied object. Instance to extract a resource type from. Gets the value of the open property. Value for the property. Instance of the type that declares the open property. Value for the open property. Gets the value of the open property. The value of the open property. Instance of the type that declares the open property. Name of the open property. Gets the name and values of all the properties that are defined in the given instance of an open type. A collection of name and values of all the open properties. Instance of the type that declares the open property. Invokes the given service operation and returns the results. The result of the service operation, or a null value for a service operation that returns void. Service operation to invoke. Values of parameters to pass to the service operation. The data source object from which data is provided. The data source. Gets a value that indicates whether null propagation is required in expression trees. A value that indicates whether null propagation is required. This interface declares the methods required to support ServiceActions. This interface declares the methods required for passing etag values to the provider. This interface declares the methods required for supporting update of resources Creates the resource of the specified type and that belongs to the specified container. The object representing a resource of specified type and belonging to the specified container. The name of the entity set to which the resource belongs. The full namespace-qualified type name of the resource. Gets the resource of the specified type identified by a query and type name. An opaque object representing a resource of the specified type, referenced by the specified query. Language integrated query (LINQ) pointing to a particular resource. The fully qualified type name of resource. Resets the resource identified by the parameter to its default value. The resource with its value reset to the default value. The resource to be updated. Sets the value of the property with the specified name on the target resource to the specified property value. The target object that defines the property. The name of the property whose value needs to be updated. The property value for update. Gets the value of the specified property on the target object. The value of the object. An opaque object that represents a resource. The name of the property whose value needs to be retrieved. Sets the value of the specified reference property on the target object. The target object that defines the property. The name of the property whose value needs to be updated. The property value to be updated. Adds the specified value to the collection. Target object that defines the property. The name of the collection property to which the resource should be added.. The opaque object representing the resource to be added. Removes the specified value from the collection. The target object that defines the property. The name of the property whose value needs to be updated. The property value that needs to be removed. Deletes the specified resource. The resource to be deleted. Saves all the changes that have been made by using the APIs. Returns the instance of the resource represented by the specified resource object. Returns the instance of the resource represented by the specified resource object. The object representing the resource whose instance needs to be retrieved. Cancels a change to the data. Supplies the eTag value for the given entity resource. Cookie that represents the resource. A that is true when property values must be compared for equality; false when property values must be compared for inequality. An list of the eTag property names and corresponding values. Queues up the invokable to be invoked during IUpdatable.SaveChanges(). The invokable instance whose Invoke() method will be called during IUpdatable.SaveChanges(). Internal interface whose implementation loads known types, validates the model and sets all the metadata objects to read-only. Also used for obtaining entity container annotations. Called by the service to let the provider perform data model validation. Collection of known types. Whether to use metadata cache ordering instead of default ordering. Return the list of custom annotation for the entity container with the given name. Name of the EntityContainer. Return the list of custom annotation for the entity container with the given name. Interface used for the discovery of properties that will be part of the ETag for entities belonging to the given resource set and resource type, also used for obtaining metadata EDM version. Given a resource container and resource type, gets the list of ResourceProperties that are part of the ETag. Resource set name. Resource type of entities in the resource container. Collection of properties that are part of the ETag. Gets the metadata schema version. ObjectContextServiceProvider which provides implementation of metadata, query and update interfaces. Initializes a new System.Data.Services.Providers.EntityFrameworkDataServiceProvider instance. needed during provider construction. Initializes a new System.Data.Services.Providers.EntityFrameworkDataServiceProvider instance. Required data service instance. Required data source instance. Given the specified name, tries to find a resource set. Name of the resource set to resolve. Returns the resolved resource set, null if no resource set for the given name was found. True if resource set with the given name was found, false otherwise. Gets the ResourceAssociationSet instance when given the source association end. Resource set of the source association end. Resource type of the source association end. Resource property of the source association end. ResourceAssociationSet instance. Given the specified name, tries to find a type. Name of the type to resolve. Returns the resolved resource type, null if no resource type for the given name was found. True if we found the resource type for the given name, false otherwise. The method must return a collection of all the types derived from . The collection returned should NOT include the type passed in as a parameter. An implementer of the interface should return null if the type does not have any derived types (ie. null == no derived types). Resource to get derived resource types from. A collection of resource types () derived from the specified or null if there no types derived from the specified exist. Returns true if represents an Entity Type which has derived Entity Types, else false. instance of the resource type in question. True if represents an Entity Type which has derived Entity Types, else false. Given the specified name, tries to find a service operation. Name of the service operation to resolve. Returns the resolved service operation, null if no service operation was found for the given name. True if we found the service operation for the given name, false otherwise. Returns the IQueryable that represents the resource set. resource set representing the entity set. An IQueryable that represents the set; null if there is no set for the specified name. Gets the for the specified . Target instance to extract a from. The that describes this in this provider. Get the value of the strongly typed property. instance of the type declaring the property. resource property describing the property. value for the property. Get the value of the open property. instance of the type declaring the open property. name of the open property. value for the open property. Get the name and values of all the properties defined in the given instance of an open type. instance of a open type. collection of name and values of all the open properties. Invoke the given service operation and returns the results. service operation to invoke. value of parameters to pass to the service operation. returns the result of the service operation. If the service operation returns void, then this should return null. Queues up the to be invoked during IUpdatable.SaveChanges(). The invokable instance whose Invoke() method will be called during IUpdatable.SaveChanges(). Passes the etag value for the given resource. cookie representing the resource. true if we need to compare the property values for equality. If false, then we need to compare values for non-equality. list of the etag property names and its corresponding values. Creates the resource of the given type and belonging to the given container container name to which the resource needs to be added full type name i.e. Namespace qualified type name of the resource object representing a resource of given type and belonging to the given container Gets the resource of the given type that the query points to query pointing to a particular resource full type name i.e. Namespace qualified type name of the resource object representing a resource of given type and as referenced by the query Resets the value of the given resource to its default value resource whose value needs to be reset same resource with its value reset Sets the value of the given property on the target object target object which defines the property name of the property whose value needs to be updated value of the property Gets the value of the given property on the target object target object which defines the property name of the property whose value needs to be updated the value of the property for the given target resource Sets the value of the given reference property on the target object target object which defines the property name of the property whose value needs to be updated value of the property Adds the given value to the collection target object which defines the property name of the property whose value needs to be updated value of the property which needs to be added Removes the given value from the collection target object which defines the property name of the property whose value needs to be updated value of the property which needs to be removed Delete the given resource resource that needs to be deleted Saves all the pending changes made till now Returns the actual instance of the resource represented by the given resource object object representing the resource whose instance needs to be fetched The actual instance of the resource represented by the given resource object Revert all the pending changes. Called by the service to let the provider perform data model validation. Collection of known types. Whether to use metadata cache ordering instead of default ordering. Return the list of custom annotation for the entity container with the given name. Name of the EntityContainer. Return the list of custom annotation for the entity container with the given name. Given a resource container and resource type, gets the list of ResourceProperties that are part of the ETag. Resource set name. Resource type of entities in the resource container. Collection of properties that are part of the ETag. Gets the service object of the specified type. An object that specifies the type of service object to get. A service object of type serviceType.-or- null if there is no service object of type serviceType. Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Disposes the current object. Whethere the call is coming from IDisposable interface. Creates the inner provider object. Data service instance. Data source instance. Initializes the provider by loading metdata information. Should service operations be loaded. Namespace name for the EDM container. Name of the EDM container Gets all available containers. Returns all the types in this data source Returns all the service operations in this data source The data source from which data is provided. Gets a value indicating whether null propagation is required in expression trees. Instance of provider behavior that defines the assumptions service should make about the provider. Gets the metadata schema version. Extends to expose the that the property was based on. The this edm property was created from. Extends to expose the that the entity set was based on. The resource-set wrapper that this entity-set was created from. Extends to expose the that the type was based on. The resource-type that this type was created from. Implementation of based on a . Initializes a new instance of . The collection resource type this edm collection type is being created for. The element type of the collection. The resource-type that this type was created from. Internal enum for indicating whether the is currently being used for reading/writing payloads or parsing URIs. Indicates that the model is being used for reading/writing payloads. Indicates that the model is being used for parsing $select/$expand. Indicates that the model is being used for URI path parsing. This interface is intended to extend and add additional information for resolving service actions during URI parsing. Tries to find the for the given resolution arguments. The data service operation context instance. The arguments to use when resolving the action. Returns the service action instance if the resolution is successful; null otherwise. true if the resolution is successful; false otherwise. Provides information for an attempt to resolve a specific service action during URI parsing. Initializes a new instance of . The service action name taken from the URI. The binding type based on interpreting the URI preceeding the action, or null if the action is being invoked from the root of the service. The service action name taken from the URI. The binding type based on interpreting the URI preceeding the action, or null if the action is being invoked from the root of the service. Schema version compliance of the metadata. EDM v1.0 compliant. EDM v1.1 compliant. EDM v1.2 compliant. EDM v2.0 compliant. EDM v2.2 compliant. EDM v3.0 compliant The kind of query processing behavior from the provider. Treat the provider query processing behavior similar to the reflection based provider. Treat the provider query processing behavior similar to the entity framework based provider. Treat the provider query processing behavior as a custom provider. Provider behavior encapsulates the runtime behavior of the provider. The service will check various properties the exposed by the to process the request. Constructs a new instance of . Kind of query processing behavior for the provider. The kind of behavior service should assume from the provider. Implementation of based on a . Initializes a new instance of the class. The type that declares this property. The resource-property this edm property is based on. The type of the property. The default value of this property. The concurrency mode of this property. The this edm property was created from. Strongly typed cache for operations. Uses the operation name and binding parameter type as a cache-key. The underlying cache which actually stores the wrappers based on a cache-key computed from the operation name and binding parameter type. Tries to find a wrapper for an operation with the given name and binding parameter type. The operation name. The operation's binding parameter's type, or null. The wrapper, if found. Whether or not a wrapper was found. Tries to find a wrapper for the given operation. The operation to find a wrapper for. The wrapper, if found. Whether or not a wrapper was found. Adds the given operation wrapper to the cache. The wrapper to add. Determines whether the given operation has already been cached. The operation to look for. Whether or not the operation has been cached. Determines whether the given operation has already been cached. The operation wrapper to look for. Whether or not the operation has been cached. Creates a cache-key from the operation name and binding parameter type. The operation name. The binding parameter type. The cache-key. Creates a cache-key for the given operation. The operation. The cache-key. Creates a cache-key for the given operation wrapper. The operation wrapper. The cache-key. Reflection based provider. ReflectionServiceProvider which provides implementation of metadata and query interfaces. Initializes a new System.Data.Services.Providers.ReflectionDataServiceProvider instance. needed during provider construction. Initializes a new System.Data.Services.Providers.ReflectionDataServiceProvider instance. Required data service instance. Required data source instance. Given the specified name, tries to find a resource set. Name of the resource set to resolve. Returns the resolved resource set, null if no resource set for the given name was found. True if resource set with the given name was found, false otherwise. Gets the ResourceAssociationSet instance when given the source association end. Resource set of the source association end. Resource type of the source association end. Resource property of the source association end. ResourceAssociationSet instance. Given the specified name, tries to find a type. Name of the type to resolve. Returns the resolved resource type, null if no resource type for the given name was found. True if we found the resource type for the given name, false otherwise. The method must return a collection of all the types derived from . The collection returned should NOT include the type passed in as a parameter. An implementer of the interface should return null if the type does not have any derived types (ie. null == no derived types). Resource to get derived resource types from. A collection of resource types () derived from the specified or null if there no types derived from the specified exist. Returns true if represents an Entity Type which has derived Entity Types, else false. instance of the resource type in question. True if represents an Entity Type which has derived Entity Types, else false. Given the specified name, tries to find a service operation. Name of the service operation to resolve. Returns the resolved service operation, null if no service operation was found for the given name. True if we found the service operation for the given name, false otherwise. Returns the IQueryable that represents the resource set. resource set representing the entity set. An IQueryable that represents the set; null if there is no set for the specified name. Gets the for the specified . Target instance to extract a from. The that describes this in this provider. Get the value of the strongly typed property. instance of the type declaring the property. resource property describing the property. value for the property. Get the value of the open property. instance of the type declaring the open property. name of the open property. value for the open property. Get the name and values of all the properties defined in the given instance of an open type. instance of a open type. collection of name and values of all the open properties. Invoke the given service operation and returns the results. service operation to invoke. value of parameters to pass to the service operation. returns the result of the service operation. If the service operation returns void, then this should return null. Called by the service to let the provider perform data model validation. Collection of known types. Whether to use metadata cache ordering instead of default ordering. Return the list of custom annotation for the entity container with the given name. Name of the EntityContainer. Return the list of custom annotation for the entity container with the given name. Gets the service object of the specified type. An object that specifies the type of service object to get. A service object of type serviceType.-or- null if there is no service object of type serviceType. Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. Disposes the current object. Whethere the call is coming from IDisposable interface. Creates the inner provider object. Data service instance. Data source instance. Initializes the provider by loading metdata information. Sould service operations be loaded. Namespace name for the EDM container. Name of the EDM container Gets all available containers. Returns all the types in this data source Returns all the service operations in this data source The data source from which data is provided. Gets a value indicating whether null propagation is required in expression trees. Instance of provider behavior that defines the assumptions service should make about the provider. Cache for operations that were selected in the URI. Cache of selected actions based on the type that was specified in the URI, either the base type of the feed or a type segment that preceeded the action name. This is stored so that at serialization time, we can conditionally select actions based on the instance type being serialized. Cache of operations which should be serialized based on specific serialization-time instance types. Adds a set of selected operations from the URL. The specific type for which the actions are selected. Should be either the base type of the feed or from a type segment. The selected operations returned by the provider. Whether any operations were selected. Gets the set of operations that should be serialized for a specific instance type based on what was selected in the URI and what is bindable to the given type. The instance type being serialized. The selected bindable operations. Gets the set of operations selected for types the instance type can be assigned to that are bindable to the instance type. The instance type being serialized. The selected bindable operations. Provides the service writers capability to specify the type which implements the service operations. Type implementing service operations. Resolver that gives a corresponding to given CLR type. Resolver that gives a corresponding to given and . Lazily one-time initialized collection of service operations. Constructs a new instance of ServiceOperationProvider. Type implementing service operations. Resolver that gives a corresponding to given and . Resolver that gives a corresponding to given CLR type. Iterates over all the interesting methods on the type passed in the constructor and infers all the service operations from it. A list of service operations inferred from the type provided in the constructor. Returns a new based on the specified instance. Method to expose as a service operation. Protocol (for example HTTP) method the service operation responds to. Service operation corresponding to give . Method for obtaining a corresponding to the given CLR type. CLR type. correspoding to . Method for obtaining a corresponding to given resource type. Given resource type. MethodInfo for a service operation. corresponding to . Returns all the service operations exposed on the registered types. Collection of service operations. Component for generating metadata and target links for operations being serialized in entity payloads. The metadata URI of the service. The default container name. Initializes a new instance of the class. Name of the default entity container. The metadata URI of the service. Gets the metadata link value for an The operation to generate the link for. Whether or not there are multiple operations in the current scope with the same name as the current operation. Uri representing the link to this operations metadata. Gets the target link value for an The current entity being serialized. The operation to generate the link for. Whether or not there are multiple operations in the current scope with the same name as the current operation. Uri representing link to use for invoking this operation. Appends the parameter type names onto the metadata link for an operation. The operation. The builder with everything up to the operation name. Represents an annotated EDM model. The primary model The unique collection of vocabulary annotatedModels that are either contained in the primary model or that target items in the primary model. Initializes a new instance of the VocabularyAnnotationCache class. The primary model the annotatedModels belong to. Searches for vocabulary annotatedModels specified by the primary model or a referenced model (including the annotation models) for a given element. The annotated element. The vocabulary annotatedModels for the element. Adds the specified annotation. The annotation to add. Populates the annotation cache based on the current configuration of the service. 1) Adds any annotatedModels specific to the current URL convention. 2) Invokes the user-provided 'AnnotationsBuilder' delegate. The service configuration. Checks whether an annotatable item is contained within a given model. The annotatable item. The model to search within. A boolean to indicate whether or not the item was found. Adds a set of annotations that can be returned when either FindDeclaredVocabularyAnnotations or VocabulationAnnotations are accessed. The enumerable list of annotations. Gets the collection of vocabulary annotatedModels that are either contained in the primary model or that target items in the primary model. In case of duplicates, the first annotation is taken and the rest are ignored (i.e. the ordering of the annotation models is significant). Uniqueness of annotatedModels is determined based on [target, term, qualifier]. Equality comparer for IEdmVocabularyAnnotation. Determines whether two IEdmVocabularyAnnotations are the same. First AnnotationDescriptor to compare. Second AnnotationDescriptor to compare. true if both are the same; false otherwise. Computes hashcode for IEdmVocabularyAnnotation. Object to compute hashcode for. Computed hashcode. Handles $callback query parameter. Gets the $callback query parameter if present. Also performs some validation: We do not allow $callback to be present if the content-type for the response is going to be anythign but JSON or plain text. The request message. The format we will write the reponse in. Returns the name of the callback function $callback specifies, or null if there isn't one. Represents the client's preferences as specified in the 'prefer' request header. Singleton instance which expresses no client preferences. The client's preference for whether or not to send a response body. The client's preference for what instance annotations to send on the response. Initializes a new instance of the class. The request description. The request verb. The request message. The effective max response version for the request, which is the min of MDSV and MPV. Prevents a default instance of the class from being created. The response body preference. Interprets the client preference for having a response body. The request description. The request verb. The request message. An enum representation of the client's preference. Gets a value indicating whether the client has a preference for whether or not to include a response body. true if the client has a preference for whether or not to include a response body; otherwise, false. Gets a value indicating that a the client prefers a response body. true if the client prefers a response body; otherwise, false. Gets a value indicating that a the client prefers no response body. true if the client prefers no response body; otherwise, false. The client's preference for what annotations to send on the response. Gets the required response version based on whether preferences were applied. Client preference for having/not-having a response body. No client preference was honored, default behavior. Client asked for no-content. Client asked for content. Constants to be used in the configuration file. Name of the section where features can be turned on/off Element name for allowing replace functions in url feature. Attribute name to enable features. Features section for data services Element to specify whether replace functions should be allowed in url or not. Feature for allowing replace functions in url. Returns the value of the enable attribute for data services replace feature. returns true if the element is present otherwise false. Configuration section group for data services Features section whether you can turn on/off specific data services features. Strategy for getting the content type based on $format and the accept header. Gets a comma-separated list of client-supported MIME Accept types. If $format is found with a value we recognize, we must use the matching content type and ignore accept header. If $format is found but we don't recognize the value, return just that value (don't even concat to accept values). Later we'll probably throw. If no $format, use accept header value (might be a list). Returning null indicates neither was set. Value of $format or null. Value of accept header or null. MaxDataServiceVersion as specified by the request or determined from our logic. A comma-separated list of client-supported MIME Accept types. Strategy for getting the content type based on $format and the accept header for V3. Gets a comma-separated list of client-supported MIME Accept types. If $format is found with a value we recognize, we must use the matching content type and ignore accept header. If $format is found but we don't recognize the value, return just that value (don't even concat to accept values). Later we'll probably throw. If no $format, use accept header value (might be a list). Returning null indicates neither was set. Value of $format or null. Value of accept header or null. MaxDataServiceVersion as specified by the request or determined from our logic. A comma-separated list of client-supported MIME Accept types. Public class which wraps the ODataWriter instance. ODataWriter instance that this class wraps. Creates a new instance of DataServiceODataWriter. Instance of ODataWriter that this class wraps. Start writing a feed. DataServiceODataWriterFeedArgs which contains the ODataFeed and the collection instance to serialize. Start writing an entry. DataServiceODataWriterEntryArgs which contains the ODataEntry and the entry instance to serialize. Start writing a navigation link. DataServiceODataWriterNavigationLinkArgs which contains the ODataNavigationLink to serialize. Finish writing a feed/entry/navigation link. Finish writing a feed. DataServiceODataWriterFeedArgs which contains the ODataFeed and the collection instance that is being serialized. This method calls WriteEnd() and it's used to track when WriteEnd is called for feed. Finish writing an entry. DataServiceODataWriterEntryArgs which contains the ODataEntry and the entry instance that is being serialized. This method calls WriteEnd() and it's used to track when WriteEnd is called for Entry. Finish writing a navigation link. DataServiceODataWriterNavigationLinkArgs which contains the ODataNavigationLink that is being serialized. This method calls WriteEnd() and it's used to track when WriteEnd is called for Link. Flushes the write buffer to the underlying stream. Class that keeps track of the ODataEntry, entity instance and other information that we need to provide to the service author when they choose to provide their own instance of ODataWriter. Creates a new instance of DataServiceODataWriterEntryArgs ODataEntry instance. Entity instance that is getting serialized. DataServiceOperationContext instance. Gets the ODataEntry instance containing all the information that is going to be written in the wire. Gets the instance of the entity that is getting serialized. Gets the instance of DataServiceOperationContext. Class that keeps track of the ODataFeed, collection instance and other information that we need to provide to the service author when they choose to provide their own instance of ODataWriter. Creates a new instance of DataServiceODataWriterFeedArgs ODataFeed instance. IEnumerable instance that is getting serialized. DataServiceOperationContext instance. Gets the instance of ODataFeed that is going to get serialized. Gets the IEnumerable instance which represent the collection that is getting serialized. Gets the instance of DataServiceOperationContext. Class that keeps track of the ODataNavigationLink and other information that we need to provide to the service author when they choose to provide their own instance of ODataWriter. Creates a new instance of DataServiceODataWriterNavigationLinkArgs. Instance of ODataNavigationLink. Instance of DataServiceOperationContext. Gets the ODataNavigationLink instance that is going to be serialized. Gets the instance of DataServiceOperationContext. Use this class to parse literals from keys, etags, skiptokens, and filter/orderby expression constants. Default singleton instance of the literal parser. Singleton instance of the literal parser to use for filters and operation parameters. Singleton instance of the literal parser for when keys-as-segments is turned on, which does not wrap the formatted strings in any quotes or type-markers. Mapping between primitive CLR types and lightweight parser classes for that type. Gets the literal parser for keys, based on whether the keys are formatted as segments. Whether or not the keys is formatted as a segment. The literal parser to use. Converts a string to a primitive value. Type to convert string to. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Gets the literal parser to use for constants in filter/orderby expressions and operation parameters. Gets the literal parser to use for ETags. Default literal parser which has type-markers and single-quotes. Also supports arbitrary literals being re-encoded in binary form. Converts a string to a primitive value. Type to convert string to. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Tries to parse the literal by first removing required formatting for the expected type, then converting the resulting string. String text to convert. Type to convert string to. After invocation, converted value. true if the value was converted; false otherwise. Literal parser which supports spatial values, but is otherwise equivalent to the default parser. Converts a string to a primitive value. Type to convert string to. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. Simplified literal parser for keys-as-segments which does not expect type-markers, single-quotes, etc. Does not support re-encoding literals as binary. Converts a string to a primitive value. Type to convert string to. String text to convert. After invocation, converted value. true if the value was converted; false otherwise. If the string starts with '$', removes it. Also asserts that the 2nd character is also '$', as otherwise the string would be treated as a system segment. The text. The string value with a leading '$' removed, if the string started with one. Helper class for parsing a specific type of primitive literal. XML whitespace characters to trim around literals. The expected prefix for the literal. Null indicates no prefix is expected. The expected suffix for the literal. Null indicates that no suffix is expected. Whether or not the suffix is required. The expected type for this parser. Initializes a new instance of the class. The expected type for this parser. The expected suffix for the literal. Null indicates that no suffix is expected. Whether or not the suffix is required. Initializes a new instance of the class. The expected type for this parser. The expected prefix for the literal. Initializes a new instance of the class. The expected type for this parser. Tries to convert the given text into this parser's expected type. Conversion only, formatting should already have been removed. The text to convert. The target value. Whether or not conversion was successful. Tries to remove formatting specific to this parser's expected type. The text to remove formatting from. Whether or not the expected formatting was found and succesfully removed. Determines whether the values for the specified types should be quoted in URI keys. Type to check. true if values of require quotes; false otherwise. Check and strip the input for literal The suffix value The string to check A string that has been striped of the suffix Primitive parser which uses a delegate for conversion. The expected CLR type when parsing. The delegate to use for conversion. Initializes a new instance of the class. The delegate to use for conversion. The expected suffix for the literal. Null indicates that no suffix is expected. Whether or not the suffix is required. Prevents a default instance of the class from being created. The delegate to use for conversion. Prevents a default instance of the class from being created. The delegate to use for conversion. The expected prefix for the literal. Creates a primitive parser which wraps the given delegate and does not expect any extra markup in serialized literal. The delegate to use for conversion. A new primitive parser. Creates a primitive parser which wraps the given delegate and expects serialized literals to start with one of the given prefixes. The delegate to use for conversion. The expected prefix for the literal. A new primitive parser. Creates a primitive parser which wraps the given delegate and expects serialized literals to end with the given suffix. The delegate to use for conversion. The expected suffix for the literal. Null indicates that no suffix is expected. A new primitive parser. Creates a primitive parser which wraps the given delegate and expects serialized literals to end with the given suffix. The delegate to use for conversion. The expected suffix for the literal. Null indicates that no suffix is expected. Whether or not the suffix is required. A new primitive parser. Tries to convert the given text into this parser's expected type. Conversion only, formatting should already have been removed. The text to convert. The target value. Whether or not conversion was successful. Parser specific to the Edm.Decimal type. Initializes a new instance of the class. Special helper to convert a string to a decimal that will allow more than what XmlConvert.ToDecimal supports by default. The text to convert. The converted decimal value. Parser specific to the Edm.Binary type. Initializes a new instance of the class. Tries to convert the given text into this parser's expected type. Conversion only, formatting should already have been removed. The text to convert. The target value. Whether or not conversion was successful. Tries to remove formatting specific to this parser's expected type. The text to remove formatting from. Whether or not the expected formatting was found and succesfully removed. Returns the 4 bits that correspond to the specified character. Character in the 0-F range to be converted. The 4 bits that correspond to the specified character. Thrown when 'c' is not in the '0'-'9','a'-'f' range. Parser specific to the Edm.String type. Initializes a new instance of the class. Tries to convert the given text into this parser's expected type. Conversion only, formatting should already have been removed. The text to convert. The target value. Whether or not conversion was successful. Tries to remove formatting specific to this parser's expected type. The text to remove formatting from. Whether or not the expected formatting was found and succesfully removed. Parser for well-known-text spatial literals seen in a URI. Tries to parse a spatial literal. Type of the literal. The literal text. The literal value. true if the parse was successful, false otherwise Tries to extract the WellKnownTextSQL portion from an astoria spatial literal. The spatial literal. The prefix. The well known text SQL. true if the extract was successful, false otherwise. Tries to parse a spatial literal. The spatial type to parse to The literal text. The prefix. The formatter. The literal value. true if the parse was successful, false otherwise A implementation that is only used for writing error payloads inside already existing error payloads. In this case, want to reuse the existing stream to write the second error, and we want ODL not to write any additional headers or do anything else. So, this implementation ignores SetHeader calls and throws on various other calls. Stream to write the error to. Build a new PartiallyWrittenStreamMessage with the given stream. Backing stream of the message. Getting arbitrary header values is not supported for this implementation. The name of the header to get. The value of the HTTP header, or null if no such header was present on the message. This implementation ignores calls to SetHeader since headers have already been written in the real response message. The name of the header to set. The value of the HTTP header or 'null' if the header should be removed. Gets the stream for writing the error message. The stream for this message. Getting headers from this implementation is not supported. Getting/setting the status code is not supported for this implementation. Factory for creating and configuring message writers and their settings. The current writer settings. The current model. The current response message. Prevents a default instance of the class from being created. The service URI. The response version. The data service. The response message. The model to provide to the message writer. Create a new instance of ODataMessageWriterSettings for normal requests. Data service instance. The current request description. IODataResponseMessage implementation. The model to provide to the message writer. An instance of a message writer with the appropriate settings. Create a new instance of ODataMessageWriterSettings for batch requests. Data service instance. An instance of a message writer with the appropriate settings. Create a new instance of ODataMessageWriterSettings for errors. Service base uri. Data service instance. Version of the response payload. IODataResponseMessage implementation. Accept header value. Accept charset header value. An instance of a message writer with the appropriate settings. Applies common settings from the parameters to the given writer settings. The writer settings to modify. The service URI. The response version. The data service. The response message. Creates a new message writer settings instance. A new settings instance. Creates a new message writer from the current settings, message, and model. A new message writer. Erases the current response message, replacing it with a new response messaage specifically for handling errors that occur while writing errors. The stream is the same as the original message, but everything else is ignored. Gets the writer settings. Gets the model. Extends to also carry a set of media type parameters. The raw media type represented by this instance. The parameters of the raw media type once it has been parsed. Initializes a new instance of the class. The format to extend. The raw media type represented by this instance. Initializes a new instance of the class. The format to extend. Gets the value for the parameter of the specified name, or null if it is not found. Name of the parameter. The value of the parameter or null. Returns whether the parameter name matches using case-insensitive comparison. The media parameter. Name to compare to. Whether the name matches. Ensures that the media type has been parsed and that the parameters list has been populated. This is done lazily to avoid parsing them if GetParameterValue is never called. Gets the format this instance is extending. Gets a value indicating whether this instance is the Atom format. Gets a value indicating whether this instance is the JsonLight format. Extension methods classes in WCF Data Services Server. Set the response stream. The message that we are setting the stream for. Stream to which the response needs to be written. Gets the Request-If-Match header from the request. Message to get header from. Value of the request if match header. Gets the Request-If-None-Match header from the request. Message to get header from. Value of the request if none match header. Gets the Request Accept Charset header from the request. Message to get header from. Value of the Request Accept Charset header. Enum to represent various http methods Not Initialized. Represents the GET http method. Represents the PUT http method. Represents the POST http method. Represents the DELETE http method. Represents the MERGE http method. Represents the PATCH http method. Utility functions for reasoning about HttpVerbs. List of the HTTP Verbs we use for convenience. Returns true if the given verb could cause a creation, update, or deletion. Http verb to check. True if the given verb could cause a creation, update, or deletion. Returns true if the given verb is querying data (only gets information). Http Verb to check. True if the given verb is querying data. Returns true if the given verb could cause an update. Http verb to check. True if the given verb could cause an update. Returns true if the given verb could cause a creation. Http verb to check. True if the given verb could cause a creation. Returns true if the given verb could cause a deletion. Http verb to check. True if the given verb could cause a deletion. Component for formatting literals for use in URIs, ETags, and skip-tokens. Constant table of nibble-to-hex convertion values. Default singleton instance for parenthetical keys, etags, or skiptokens. Default singleton instance for keys formatted as segments. Gets the literal formatter for keys. if set to true then the key is going to be written as a segment, rather than in parentheses. The literal formatter for keys. Converts the specified value to an encoded, serializable string for URI key. Non-null value to convert. value converted to a serializable string for URI key. Escapes the result accoridng to URI escaping rules. The result to escape. The escaped string. Converts the given byte[] into string. byte[] that needs to be converted. String containing hex values representing the byte[]. Formats the literal without a type prefix, quotes, or escaping. The non-null value to format. The formatted literal, without type marker or quotes. Formats the literal without a type prefix or quotes, but does escape it. The non-null value to format. The formatted literal, without type marker or quotes. Gets the literal formatter for ETags. Gets the literal formatter for skip-tokens. Helper utilities that capture any deltas between ODL, the WCF DS Client, and the WCF DS Server. Creates a new exception instance to be thrown if the value is not a type that can be formatted as a literal. DEVNOTE: Will return a different exception depending on whether this is ODataLib, the WCF DS Server, or the WCF DS client. The literal value that could not be converted. The exception that should be thrown. Tries to convert the given value to one of the standard recognized types. Used specifically for handling XML and binary types. The original value. The value converted to one of the standard types. Whether or not the value was converted. Appends the decimal marker to string form of double value if necessary. DEVNOTE: Only used by the client and ODL, for legacy/back-compat reasons. Input string. String with decimal marker optionally added. Returns whether a 'd' literal suffix to a double value based on its value. DEVNOTE: The WCF DS client never added the 'd', but WCF DS Server and ODL do. The value itself. Whether or not to append the 'd' suffix. Tries to convert an instance of System.Data.Linq.Binary to a byte array. The original value which might be an instance of System.Data.Linq.Binary. The converted byte array, if it was converted. Whether or not the value was converted. Default literal formatter implementation. If true, literals will not be URL encoded. Creates a new instance of . Creates a new instance of . If true, literals will not be URL encoded. Converts the specified value to an encoded, serializable string for URI key. Non-null value to convert. value converted to a serializable string for URI key. Escapes the result accoridng to URI escaping rules. The result to escape. The escaped string. Formats the literal with a type prefix and quotes (if the type requires it). The value to format. The formatted literal, with type marker if needed. Literal formatter for keys which are written as URI segments. Very similar to the default, but it never puts the type markers or single quotes around the value. Creates a new instance of . Converts the specified value to an encoded, serializable string for URI key. Non-null value to convert. value converted to a serializable string for URI key. If the string starts with a '$', prepends another '$' to escape it. The string value. The string value with a leading '$' escaped, if one was present. This class implements IEqualityComparer for UnicodeCategory Using this class rather than EqualityComparer<T>.Default saves from JIT'ing it in each AppDomain. Checks whether two unicode categories are equal first unicode category second unicode category true if they are equal, false otherwise Gets a hash code for the specified unicode category the input value The hash code for the given input unicode category, the underlying int An implementation backed by an IDSMP metadata provider. The edm model to which this instance belongs to. EntityContainer instance that this set belongs to. The resource set underlying this entity set. Mapping of navigation property to entity set. Constructor. The edm model this instance belongs to. Entity container instance that this set belongs to. ResourceSet that this entity set represents. Finds the entity set that this navigation property refers to. Instance of navigation property. an instance of IEdmEntitySet that this navigation property refers to. Cache the entity set that the given navigation property refers to. IEdmNavigationProperty that contains the navigation property metadata. Entityset that refers to. The resource-set wrapper that this entity-set was created from. The element type of this entity set. The entity container kind of the entity set; returns EdmContainerElementKind.EntitySet. Gets the name of this element. Gets the list of navigation targets for this set. EntityContainer instance that this set belongs to. Represents a navigation property synthesized for an association end that does not have a corresponding navigation property. The destination end of this navigation property. The type of the navigation property. The on-delete action of the navigation property. The name of this navigation property. The dependent properties of the referential constraint. Creates a new Silent partner for a navigation property The navigation property this is a silent partner of. The on delete action for this side of the association The multiplicity of this side of the association. The name of this navigation property. Dependent properties of this navigation property. The dependent properties Gets the destination end of this navigation property. Gets the action to execute on the deletion of this end of a bidirectional association. Gets whether this navigation property originates at the principal end of an association. Gets a value indicating whether the navigation target is contained inside the navigation source. Gets the dependent properties of this navigation property, returning null if this is the principal end or if there is no referential constraint. Gets the kind of this property. Gets the type that this property belongs to. Gets the type that this property belongs to. Gets the name of this element. Enumeration for classifying the different kinds of operation parameter binding. Used when the first parameter of a service action is not a binding parameter. Used when the first parameter of a service action is a binding parameter and some or all instances of the binding parameter type may be bound to the service action. Used when the first parameter of a service action is a binding parameter and all instances of the binding parameter type must be bound to the service action. When this value is set, the method will not be called for the service action."/> Keeps all the information about the query results. Actuals results from the provider. Query that needs to be disposed. Enumerator instance that we got from the results. Keeps track whether the enumerator has been successfully advanced to the first element. Creates a new instance of QueryResultInfo. Query results that we need to enumerate and serialize. Creates a new instance of QueryResultInfo. For performance reasons we reuse results from existing query to read a projected value. We create an enumerator containing the projected value but must not dispose the original query until later. This wrapper allows us to pass the created enumerator and dispose the query at the right time. Query results that we need to enumerate and serialize. Actual query that we need to dispose. Read the next element from the results. true if there is a next element, otherwise returns false. Dispose the enumerator and the innerQueryResults, if specified. The outer enumerable must be disposed by the ResponseBodyWriter. Checks the results enumerator for IExpandedResult. an instance of IExpandedResult. Get the continuation token from the paging provider. Instance of DataServicePagingProviderWrapper instance. list of the continuation tokens as provided by the wrapper. Forms an instance of DataServiceODataWriterFeedArgs that contains results. ODataFeed instance. DataServicesOperationContext instance. DataServiceODataWriterFeedArgs instance Current instance from the result. Returns true if the results has been moved forward. Standalone component for doing content-type negotiation which wraps ODataLib's APIs The response version. Whether or not to throw if no match is found. Initializes a new instance of the class. The version of the response. if set to true then the method should throw an exception if no match is found. Otherwise null should be returned in this case. Determines the response format based on the results of content negotiation. The payload kind of the response. The acceptable media types used to determine the content type of the message. This is a comma separated list of content types as specified in RFC 2616, Section 14.1 The acceptable charsets to use to the determine the encoding of the message. This is a comma separated list of charsets as specified in RFC 2616, Section 14.2 The format the response should use. A implementation that is only used for content-negotation and doesn't support anything other than SetHeader for 'Content-Type'. Getting arbitrary header values is not supported for this implementation. The name of the header to get. The value of the HTTP header, or null if no such header was present on the message. Sets the value of an HTTP header. Only certain headers are allowed to be set in this implementation. The name of the header to set. The value of the HTTP header or 'null' if the header should be removed. Getting the stream is not supported for this implementation. The stream for this message. Getting headers from this implementation is not supported. Getting/setting the status code is not supported for this implementation. Gets the content type which was set via SetHeader, if any. Component for performing simple syntactic parsing of the $expand and $select query options. Initializes a new instance of the class. The request description. The data service. Throws exceptions if the $select query option cannot be specified on this request. The request description. Determines whether there are any selected items at any level of the tree. Essentially determines whether $select was specified in the request. The expand/select clause to check for selected items. Whether the clause had a select item at any level that was not an expansion. The actual select/expand clause. Whether there was a $expand in the request. Whether there was a $select in the request. Gets the raw query option value of $select. Contains the current entity being serialized, its type, its edit-link, and its identity. Backing storage field for the entity. Backing storage field for the entity's type. Backing storage field for entity's key (equivalent to the identity, but without the service root). Initializes a new instance of the class. The entity itself. The type of the entity. The serialized entity key for the instance. Creates a new instance of . The entity itself. The type of the entity. The resource set the entity belongs to. The wrapper for the current service provider. The absolute service URI. The new instance of Creates a new instance of . The entity itself. The type of the entity. Name of the resource set the entity belongs to. if set to true then the type segment should be included in the edit link. The callback to get each property value. The key serializer to use. The absolute service URI. The new instance of . Creates a new instance of . Should only be used from other Create methods or from unit tests. The entity itself. The type of the entity. The serialized key of the entity. The new instance of . Gets the entity itself. The serialized key of the entity, which contains its edit-link, identity, etc. Gets the of the entity. Component for serializing entity key values for building identities, edit links, etc. Singleton instance of the default serializer. Singleton instance of the segment-based serializer. Creates a new key serializer. The url convention to use. A new key serializer. Appends the key expression for an entity to the given The type used to represent properties. The builder to append onto. The key properties. The callback to get each property's name. The callback to get each property's value. Gets the value of the key property and serializes it to a string. The type used to represent properties. The callback to get the value for a property. The key property. The literal formatter to use. The serialized key property value. Appends the key using the parentheses-based syntax (e.g. Customers(1)) onto the given . The builder to append onto. The type used to represent properties. The key properties. The callback to get each property's name. The callback to get each property's value. Default implementation of the key serializer which uses parentheses (e.g. Customers(1)). Appends the key expression for an entity to the given The builder to append onto. The type used to represent properties. The key properties. The callback to get each property's name. The callback to get each property's value. Implementation of the key serializer which uses segments (e.g. Customers/1). Creates a new instance of . Appends the key expression for an entity to the given The builder to append onto. The type used to represent properties. The key properties. The callback to get each property's name. The callback to get each property's value. Appends the key for the current resource using segment-based syntax (e.g. Customers/1) onto the given . The builder to append onto. The type used to represent properties. The key properties. The callback to get each property's value. Representation of the identity and edit-link of an entity that lazily builds them on demand. Data structure for representing the identity and edit-link of an entity being serialized. Gets the edit link of the entity relative to the service base. Gets the identity of the entity. Gets the absolute edit link of the entity. Gets the absolute edit link of the entity without a type segment or other suffix. Lazy storage for the edit link as an absolute URI without any type segments. Lazy storage for the edit link as an absolute URI. Lazy storage for the edit link as a relative URI. Lazy storage for the identity. Initializes a new instance of the class which uses the same syntax for identity and edit link. The identity as a lazy string relative to the service URI. The absolute service URI. The optional suffix to append to the edit link. Null means nothing will be appended. Creates an instance of for the given properties and values. The key serializer to use. The absolute service URI. Name of the entity set. The key properties. The callback to get each property's value. The suffix to append to the edit-link, or null. A serialized-key instance. Wraps a lazy URI with another that will have the given string appended if it is not null. The lazy URI to wrap. The suffix for the URI. A new lazy URI which will have the suffix, or the same instance if the suffix was null. Gets the edit link of the entity relative to the service base. Gets the identity of the entity. Gets the absolute edit link of the entity. Gets the absolute edit link of the entity without a type segment or other suffix. Component for interpreting the media type parameter for controlling how much payload metadata is written on the wire. The name of the media type parameter to use. The interpreted representation of the parameter. The interpreted representation of the parameter, to used for controlling the type name serialization. true if the odata format is JSON Light, false otherwise. Initializes a new instance of the class. NOTE: This constructor is for unit-testing only. The response format. The parameter value. Creates a new instance of the class. The response format. A new instance of the class. Returns whether a specific kind of entry metadata should be included. Must not be called for type names, however. The kind of metadata. True if the metadata should be included, otherwise false Returns whether an entry type name should be included. Name of the entity type. Name of the entity set's base-type. True if the type name should be included, otherwise false Returns whether a specific kind of stream metadata should be included. The kind of metadata. True if the metadata should be included, otherwise false Returns whether a specific kind of navigation link metadata should be included. The kind of metadata. True if the metadata should be included, otherwise false Returns whether a specific kind of association link metadata should be included. The kind of metadata. True if the metadata should be included, otherwise false Returns whether a specific kind of feed metadata should be included. The kind of metadata. True if the metadata should be included, otherwise false Returns whether a specific kind of operation metadata should be included. The kind of metadata. Callback to determine if the value has been changed by the user. True if the metadata should be included, otherwise false Returns whether an always available operations should be included in the entry. true if always available operations should be included, false otherwise. Returns whether ODataLib should be explicitly instructed to include or omit a type name on the wire. The value to be serialized. The type to be potentially serialized. The type name which ODataLib should be told to serialize. A value of null indicates the type name should be omitted. true if an annotation should be created to override ODataLib's default type name serialization behavior; false if the ODataLib default behavior should be used. Determins whether to use absolute or relative Uri for next link. true if the next link Uri should be absolute; false if the next link Uri should be relative. Unit test method for determining whether two facades are equivalent (ie: wrap the same server/client models). The other facade. true if the two facades wrap the same models; otherwise, false. Parses the raw parameter value provided in the media type and returns a simplified representation, assuming the format is Json Light. The raw parameter value. A representation of what option was specified. Local enum for capturing which of the parameter values was specified. The 'minimalmetadata' option The 'fullmetadata' option The 'nometadata' option Delegate for abstracting away a call to IDataServiceActionProvider.AdvertiseServiceAction. Service action to be advertised. Instance of the resource to which the service action is bound. true if the resource instance to be serialized is inside a feed; false otherwise. The value true suggests that this method might be called many times during serialization since it will get called once for every resource instance inside the feed. If it is an expensive operation to determine whether to advertise the service action for the , the provider may choose to always advertise in order to optimize for performance. The to be serialized. The server constructs the version passed into this call, which may be replaced by an implementation of this interface. This should never be set to null unless returning false. true if the service action should be advertised; false otherwise. Converts action/function metadata into ODataLib object-model instances using an action provider. Storage for the payload metadata property manager to use. Storage for the metadata query option interpreter to use. The link builder to use when serializing operations. Callback for determining whether to advertise a given action. The current format being serialized. The metadata uri of the service. Initializes a new instance of the class. The metadata query option interpreter The metadata property manager. The callback to use for determining whether an action should be advertised. Should wrap a call to IDataServiceActionProvider.AdvertiseServiceAction. Name of the container. The current format being serialized into. The metadata uri of the service. Serializes the given operations and returns the resulting instances of . The entity to serialize. Whether or not the entity is being serialized in a feed. The wrapped operations to serialize. The serialized actions. Creates a hash-set containing only the names of actions that have colliding names. The operations to check for collisions. The hash-set with the colliding names. Tries to serialize the operation. The entity to serialize. Whether or not the entity is being serialized in a feed. Whether or not there are multiple operations in the current scope with the same name as the current operation. The service operation wrapper. The ODL object-model representation of the action. Whether or not to serialize the operation. Asks the provider if the action should be advertised in payloads. The entity to serialize. Whether or not the entity is being serialized in a feed. The service operation wrapper. Target uri of the action, which will only be generated if needed. The ODL object-model representation of the action. Whether or not the action should be advertised. Method modifies the Operation Target Uri to be relative to the metadata uri if the Operation Target has the same host as the metadata uri and the format is JSONLight Operation to update Component for controlling access to payload metadata properties which may be intentionally omitted from response payloads. Note: this is currently controlled via a query option, but could be extended further in the future. The payload metadta parameter interpreter to use when deciding whether to include certain payload metadata. Initializes a new instance of the class. The interpreter for the query option. Sets the entry's ETag property if it should be included according to the current query option. The entry to modify. The callback to compute the ETag. Sets the entry's TypeName property if it should be included according to the current query option. The entry to modify. Name of the entity set's base type. Name of the entry's type. Sets the entry's Id property if it should be included according to the current query option. The entry to modify. The callback to compute the identity. Sets the entry's EditLink property if it should be included according to the current query option. The entry to modify. The callback to compute the edit link. Sets the feed's Id property if it should be included according to the current query option. The feed to modify. The callback to compute the identity. Sets the feed's NextPageLink property. The feed to modify. The absolute service Uri. The absolute next link uri. Sets the stream's EditLink property if it should be included according to the current query option. The stream to modify. The callback to compute the edit link. Sets the stream's ReadLink property if it should be included according to the current query option. The stream to modify. The callback to compute the read link. Sets the stream's ContentType property if it should be included according to the current query option. The stream to modify. The stream's content type. Sets the stream's ETag property if it should be included according to the current query option. The stream to modify. The stream's ETag. Sets the link's Url property if it should be included according to the current query option. The link to modify. The callback to compute the url. Sets the link's AssociationLinkUrl property if it should be included according to the current query option. The link to modify. The callback to compute the url. Sets the link's Url property if it should be included according to the current query option. The link to modify. The callback to compute the url. Sets the value's TypeName property if it should be included according to the current query option. The value to modify. The type reference for the given value. Sets the action's Title property if it should be included according to the current query option. The action to modify. Indicates whether the action is always available. If not, then the value will be set because the action will be passed out to user code. The title to set. Sets the action's Target property if it should be included according to the current query option. The action to modify. Indicates whether the action is always available. If not, then the value will be set because the action will be passed out to user code. The callback to compute the target. Checks whether the action's Title property has changed, and sets it to null if it should not be included according to the current query option. The action to modify. The original computed title. Checks whether the action's Target property has changed, and sets it to null if it should not be included according to the current query option. The action to modify. The callback to compute the original target. Container class for a set of enumerations for payload metadatada. Enumeration of payload metadata kinds for navigation links. The 'Url' property of a navigation link. The 'AssociationLinkUrl' property of a navigation link. Enumeration of payload metadata kinds for feeds. The 'Id' property of a feed. Enumeration of payload metadata kinds for entries. The 'Id' property of an entry. The 'TypeName' property of an entry. The 'EditLink' property of an entry. The 'ETag' property of an entry. Enumeration of payload metadata kinds for association links. The 'Url' property of an association link. Enumeration of payload metadata kinds for streams. The 'EditLink' property of a stream. The 'ReadLink' property of a stream. The 'ContentType' property of a stream. The 'ETag' property of a stream. Enumeration of payload metadata kinds for actions/functions. The 'Title' property of an operation. The 'Target' property of an operation. Query Counting Option Do not count the result set Count and return value inline (together with data) Count and return value only (as integer) Component for representing the url convention in use by the server, client, or codegen. The namespace of the term to use when building value annotations for indicating the conventions used. The name of the term to use when building value annotations for indicating the conventions used. The string value for indicating that the key-as-segment convention is being used in annotations and headers. The name of the request header for indicating what conventions are being used. The term to use for building value annotations for indicating the conventions used. The value to use when building value annotations for indicating that the key-as-segment convention is being used. Whether to generate entity keys as '/'-delimited segments instead of using parenthesis. Prevents a default instance of the class from being created. Whether keys should be generated as segments. Helper for creating an instance with explicit value. Should only be called from unit tests. Whether keys should be generated as segments. A new UrlConvention instance with the given value. Creates an instance of based on the data services' configuration and operation context. The data service. The url convention for the service. Helper for creating an instance directly from the relevant user input. Should only be called from unit tests. The data service behavior from configuration. The callback for getting custom header values. A new UrlConvention instance based on the user input. Builds the annotations needed to indicate the supported url conventions based on the service's configuration. The data service behavior. The service's model. The annotations to add to the model. Whether to generate entity keys as '/'-delimited segments instead of using parenthesis. Access rights for service actions. Specifies no rights on this service action. Specifies the right to execute the service action. Represents the current context for the operation being processed. True if the request is not a top-level request. In other words, its one of the request defined as part of the top level $batch request. RequestMessage interface for the current operation. RequestMessage for the current operation. This more or less caches the request header values and validates the data from the host interface. ResponseMessage for the current operation. This mostly tracks the response headers. True if the current operation is part of a batch request. Uri to the metadata Constructs a new instance of DataServiceOperationContext object RequestMessage instance for the current operation context. Constructs a new instance of DataServiceOperationContext object True if the current operation is part of a batch request. RequestMessage instance for the current operation context. Returns the service that provides custom operation. An instance of the service, or Null if the service is not available. The type of the service to use for validation. A service object of type or null if there is no service object of type . Gets the value for the specified key in the request query string. Item to return. The value for the specified key in the request query string; null if is not found. Creates a new instance of the RequestMessage and ResponseMessage to cache the request headers and to validate the data from the host interface. Note that this code cannot go in the constructor, because it is possible for a user to attach a host to DataService, process a request, changes fields _on the same host_, and then call process request again. So we need to be able to create a new AstoriaRequestMessage while still using the same DataServiceOpeationContext. The current data service instance. Gets the ResponseStream from the host, which is used in custom host scenarios. The ResponseStream to use from the host implementation. Gets a value that indicates whether the current operation is part of a batch request. true when the operation is part of a batch request; otherwise false. Gets the HTTP request method for the operation. The HTTP request method. Get the request URI for the current operation. The of the operation. Gets the base service URI for the request. The base of the service. Gets the request headers for the current operation. A object that contains the request headers. Gets the response headers for the current operation. A object that contains the response headers. Gets or sets the status code of the response. The status code of the operation response. RequestMessage instance for the current operation. The current data service instance. The Response Message associated with this operation, regardless of whether it is a top-level request or an inner batch operation. Gets the Metadata uri for the service Returns true if the request is part of the top level $batch request. Keeps track of the request and response headers for each operation in the batch Extends IDataServiceHost to include extra request and response headers. Provides access to the environment for a DataService, including information about the current request. Gets a data item identified by the identity key contained by the parameter of the method. The data item requested by the query serialized as a string. String value containing identity key of item requested. Handles a data service exception using information in the parameter. that contains information on the exception object. Gets an absolute URI that is the URI as sent by the client. A string that is the absolute URI of the request. Gets an absolute URI that is the root URI of the data service. A string that is the absolute root URI of the data service. The transport protocol specified by the request accept header. String that indicates the transport protocol required by the request. Gets a string representing the value of the Accept-Charset HTTP header. String representing the value of the Accept-Charset HTTP header. Gets the transport protocol specified by the content type header. String value that indicates content type. Gets the request methods such as GET, PUT, POST, PATCH or DELETE. String value that indicates request method. Gets the value for the If-Match header on the current request. String value for the If-Match header on the current request. Gets the value for the If-None-Match header on the current request. String value for the If-None-Match header on the current request. Gets the value that identifies the highest version that the request client is able to process. A string that contains the highest version that the request client is able to process, possibly null. Gets the stream that contains the HTTP request body. object that contains the request body. Gets the value that identifies the version of the request that the client submitted, possibly null. A string that identifies the version of the request that the client submitted, possibly null. Gets a string value that represents cache control information. A string value that represents cache control information. Gets the transport protocol of the response. String value containing the content type. Gets an eTag value that represents the state of data in response. A string value that represents the eTag state value. Gets or sets the service location. String that contains the service location. Gets or sets the response code that indicates results of query. Integer value that contains the response code. Gets the response stream to which the HTTP response body will be written. object to which the response body will be written. Gets the version used by the host in the response. A string value that contains the host version. Request header for an HTTP request. String value of header. Response header for an HTTP response. String value of header. Request Stream. Content Id for this operation. Output writer. Gets the absolute URI to the resource upon which to apply the request. Gets the absolute URI to the service. Request Http Method Collection of request headers for the current batch operation. Collection of response headers for the current batch operation. List of query parameters as specified in the request uri. Value of the response StatusCode header. IODataResponseMessage for this operation request. Initializes a new dummy host for the batch request. This host represents a single operation in the batch. Absolute Uri to the service. The request message representing a batch operation to wrap. Content id for the given operation host. ODataBatchWriter instance. MaxDSV header on the batch request. If the MaxDSV header is not specified in the current operation, we default to the MaxDSV from the batch level. MinDSV header on the batch request. If the MinDSV header is not specified in the current operation, we default to the MinDSV from the batch level. DSV header on the batch request. If the DSV header is not specified in the current operation, we default to the DSV from the batch level. Private constructor code that is common between normal and error construction code. ODataBatchWriter instance. Disposes the object and all its resources. Gets the value for the specified item in the request query string. Item to return. The value for the specified item in the request query string; null if is not found. Method to handle a data service exception during processing. Exception handling description. Initializes a host for error scenarios - something to which we can write the response header values and write them to the underlying stream. ODataBatchWriter instance. New BatchServiceHost instance for the error. Return the response message for this operation. ODataBatchOperationResponseMessage instance for this batch operation. Given the request uri, parse the uri and query parameters and cache them Gets the absolute URI to the resource upon which to apply the request. Gets the absolute URI to the service. Gets the character set encoding that the client requested, possibly null. Gets the character set encoding that the client requested, possibly null. Gets the HTTP MIME type of the input stream. Gets the HTTP data transfer method (such as GET, POST, or HEAD) used by the client. Gets the value of the If-Match header from the request made Gets the value of the If-None-Match header from the request made Gets the value for the MaxDataServiceVersion request header. Gets the value for the DataServiceVersion request header. Gets or sets the Cache-Control header on the response. Gets or sets the HTTP MIME type of the output stream. Gets/Sets the value of the ETag header on the outgoing response Gets or sets the Location header on the response. Gets/Sets the status code for the request made. Gets the to be written to send a response to the client. Gets or sets the value for the DataServiceVersion response header. Gets the from which the request data can be read from to the client. Dictionary of all request headers. Enumerates all response headers that has been set. Gets/Sets the content id as specified in the batch request. This same value is written out in the response headers also to allow mapping requests on the client. Output writer. The on a method is used to process updates on the specified entity set name. Use this attribute on a DataService method to indicate that this method should be invoked with data changes. Container name that the method filters. Creates a new change interceptor for an entity set specified by the parameter . The name of the entity set that contains the entity to which the interceptor applies. Gets the name of the entity set to which the interceptor applies. The string value that represents entity set name. Represents a strongly typed service that can process data-oriented resource requests. The type of the store to provide resources. will typically be a subtype of or another class that provides properties. This interface declares the service contract for a DataWeb service. Provides an entry point for the request. The resulting message for the supplied request. The object that contains the request. Provides a non-generic interface for web data services. Processes a catchable exception. The arguments describing how to handle the exception. Returns the segmentInfo of the resource referred by the given content Id; content id for a operation in the batch request. segmentInfo for the resource referred by the given content id. Get the resource referred by the segment in the request with the given index description about the request url. index of the segment that refers to the resource that needs to be returned. typename of the resource. the resource as returned by the provider. Dispose the data source instance and set it to null This method is called before a request is processed. Information about the request that is going to be processed. This method is called once the request query is constructed. The query which is going to be executed against the provider. Method to wrap the current DataServiceODataWriter with custom one to intercept WCF Data Services calls to ODataWriter. This enables seeing the ODataFeed/ODataEntry/ ODataNavigationLink instances that gets passed to underlying instance. DataServiceODataWriter instance to wrap. an instance of DataServiceODataWriter. Service configuration information. Data provider for this data service. Returns the instance of the data service. Context for current operation. Processing pipeline events Note that this is the same as DataService<T>.ProcessingPipeline. Internally we pass IDataService around and we can't always cast IDataService back to DataService<T> easily because we don't always know what T is. IDataService.ProcessingPipeline is internal and it makes the pipeline object more accessible. IUpdatable interface for this provider Reference to IDataServiceStreamProvider interface Reference to the wrapper to IDataServicePagingProvider interface. Reference to the wrapper for the IDataServiceExecutionProvider interface. Reference to the wrapper for the IDataServiceActionProvider interface. Events for the data service processing pipeline. A delegate used to create an instance of the data context. Service configuration information. Data provider for this data service. IUpdatable interface for this datasource's provider Custom paging provider interface exposed by the service. Context for the current operation. Reference to IDataServiceStreamProvider interface. Reference to IDataServiceExecutionProvider interface. Reference to the wrapper for the IDataServiceActionProvider interface. Test hook which gets called once a query is constructed right before its execution. Processes a catchable exception. The arguments describing how to handle the exception. Returns the segmentInfo of the resource referred by the given content Id; content id for a operation in the batch request. segmentInfo for the resource referred by the given content id. Get the resource referred by the segment in the request with the given index description about the request url. index of the segment that refers to the resource that needs to be returned. typename of the resource. the resource as returned by the provider. Disposes the data source of the current if necessary. Because the provider has affinity with a specific data source (which is created and set by the DataService), we set the provider to null so we remember to re-create it if the service gets reused for a different request. This method is called before a request is processed. Information about the request that is going to be processed. This method is called once the request query is constructed. The query which is going to be executed against the provider. Creates the DataServiceODataWriter class which wraps the given ODataWriter instance. ODataWriter instance to wrap. an instance of DataServiceODataWriter. Attaches the data service host to the data service identified by the parameter . An instance of . Processes an HTTP request. Response message. The body of the HTTP request. Processes an request. Provides a responseMessage-agnostic entry point for request processing. Creates a data source of the template class that will be used by the data service. An instance of the data source. The default implementation uses a constructor with no parameters to create a new instance. The instance will only be used for the duration of a single request, and will be disposed after the request has been handled. Called when an exception is raised while processing a request. Exception arguments. Called before processing each request. For batch requests, it is called one time for the top batch request and one time for each operation in the batch. that contains information about the request. Creates metadataProvider and queryProvider internally. This method will be called when the class derived from does implement IServiceProvider, and does not implement metadataPovider and queryProvider. Default implementation supports EF5 provider and Reflection provider. The datasource instance for the provider. The internal provider to be created. Note that this provider also need to implement and Checks that if etag values are specified in the header, they must be valid. header values. request description. Creates a that invokes the specified callback to write its body. Version for message. Action for message. MIME content type for body. Callback. Service with context to dispose once the response has been written. A new . Creates a new data service configuration instance data service type provider instance Whether this is an internally created provider. data service configuration instance Validate the given request. Context for current operation. Processes the incoming request, without writing anything to the response body. description about the request uri data service to which the request was made. A delegate to be called to write the body; null if no body should be written out. Serializes the results for a request into the body of a response message. Description of the data requested. data service to which the request was made. response message to serialize A delegate that can serialize the body into an IEnumerable. Gets the correct content format for a media resource. The media link entry. Accept header value. Data service instance. Request description. Response content type for the media resource or named responseStream property. Handles service action requests. description about the target request data service to which the request was made. Handles POST requests. description about the target request data service to which the request was made. a new request description object, containing information about the response payload Handles PUT requests. description about the target request data service to which the request was made. new request description which contains the info about the entity resource getting modified. Handles DELETE requests. description about the target request data service to which the request was made. Handles a request for an internal resource if applicable. Request description. data service to which the request was made. response message we are writing An action that produces the resulting responseStream; null if the description isn't for an internal resource. Compare the ETag value and then serialize the value if required Description of the uri requested. Data service to which the request was made. Response Message to write A delegate that can serialize the result. Compare the ETag value and then serialize the value if required Description of the uri requested. Enumerator whose current resource points to the resource which needs to be written index of the segment info that represents the last resource etag value for the resource specified in parent resource parameter data service to which the request was made. Message to write. A delegate that can serialize the result. Performs validation on . We check that it is not both a direct reference ($value, key) and null. We check that it is not an open property with a ResourceTypeKind.Collection value. The resulting property value to be validated. SegmentInfo for the segment we processed. Provider reference. Returns the actual entity instance and its containers for the resource in the description results. Data service description about the request made. returns the container to which the result resource belongs to. returns the actual entity instance for the given resource. Handles the unbind operations description about the request made. data service to which the request was made. This method is supposed to verify and initialize a few things before we start processing the request. Also, the processing pipeline events are fired after this method is called. service instance. Returns a instance of ResponseBodyWriter class. Description of the uri requested. data service to which the request was made. Enumerator whose current resource points to the resource which needs to be written IODataResponseMessage for the response being serialized. An instance of ResponseBodyWriter class. Checks that the applied configuration is consistent. Data service configuration instance with access right info. Metadata provider object. Handle the request - whether its a batch request or a non-batch request Returns the delegate for writing the response Handle non-batch requests description about the request uri. Returns the delegate which takes the response responseStream for writing the response. Handle the batch request. Returns the delegate which takes the response responseStream for writing the response. Creates the provider and configuration as necessary to be used for this request. Creates the metadata provider and query provider instances. Returns the metadata provider instance. Returns the query provider instance. Returns the data source instance. Whether an internal provider was instantiated for the service. Returns an instance of requested typed interface. If the service writer does not implement it, we default to the internal no-op implementation which does nothing. Type of interface requested. Metadata provider object. Function that can construct an instance of requested interface. Instance of the interface with type U. Creates a provider implementation that wraps the T type. Processes the incoming request and cache all the request headers description about the request uri. Create the data source instance by calling the CreateDataSource virtual method returns the instance of the data source. Gets an object that defines the events for the data service processing pipeline. A object that is used to define events for the data service processing pipeline. Service configuration information. Data provider for this data service Paging provider for this data service. Returns the instance of data service. Cached request headers. Processing pipeline events IUpdatable interface for this provider Reference to IDataServiceStreamProvider interface. Reference to the wrapper for the IDataServiceExecutionProvider interface. Reference to the wrapper for the IDataServiceActionProvider interface. Public func to wrap the current DataServiceODataWriter with custom one to intercept WCF Data Services calls to ODataWriter. This enables seeing the ODataFeed/ODataEntry/ ODataNavigationLink instances that gets passed to underlying instance. Gets the data source instance currently being used to process the request. The data source instance for the service. Dummy data service for batch requests Original data service instance. Batch request message reader. Batch reader for the request. Batch response message. Batch response message writer. Hashset to make sure that the content ids specified in the batch are all unique. Dictionary to track objects represented by each content id within a changeset. List of the all request description within a changeset. List of the all response headers and results of each operation within a changeset. Number of changset/query operations encountered in the current batch. Whether the batch limit has been exceeded (implies no further processing should take place). Number of CUD operations encountered in the current changeset. The context of the current batch operation. Instance which implements IUpdatable interface. Instance which implements the IDataServicePagingProvider interface. Instance which implements IDataServiceStreamProvider interface. Instance which implements IDataServiceStreamProvider interface. Reference to the wrapper for the IDataServiceActionProvider interface. Creates an instance of the batch data service which keeps track of the request and response headers per operation in the batch original data service to which the batch request was made ODataMessageReader instance for the batch request. The batch reader for the batch request. AstoriaResponseMessage for the batch response. ODataMesageWriter instance for the batch response. Processes a catchable exception. The arguments describing how to handle the exception. This method is called once the request query is constructed. The query which is going to be executed against the provider. Returns the segmentInfo of the resource referred by the given content Id; content id for a operation in the batch request. segmentInfo for the resource referred by the given content id. Get the resource referred by the segment in the request with the given index description about the request url. index of the segment that refers to the resource that needs to be returned. typename of the resource. the resource as returned by the provider. Dispose the data source instance This method is called before a request is processed. Information about the request that is going to be processed. Creates the DataServiceODataWriter class which wraps the given ODataWriter instance. ODataWriter instance to wrap. an instance of DataServiceODataWriter. Handle the batch content response responseStream for writing batch response Creates a batch service host for the current batch operation. Data service instance. The operation message to create a context for. content ids that are defined in the batch. Output writer. An instance of the batch service host which represents the current operation. Creates an operation context for the current batch operation Data service instance. The operation batch service host. instance of the operation context which represents the current operation. Handles a single operation in the batch request. The operation message for the current operation. The batch writer to write responses to. true if all CUD operations should be ignored, this is used if we've found an exception in the current changeset to read over all the rest of the changeset, without actually processing the operations in it. Boolean which tracks if all the operations are service operations. If so we don't need to call SaveChanges. Write the exception encountered in the middle of the changeset to the response exception encountered list of operation contexts in the changeset writer to which the response needs to be written Underlying response responseStream. Response version to use. Increases the count of batch changsets/queries found, and checks it is within limits. Increases the count of changeset CUD operations found, and checks it is within limits. For POST operations, the RequestEnumerable could be out of date when a PUT is referring to the POST within the changeset. We need to update the RequestEnumerable to reflect what actually happened to the database. description for the current request. Write the response for the given request, if required. description of the request uri. If this is null, means that no response needs to be written Batch responseMessage for which the request should be written. Service configuration information. Data provider for this data service. IUpdatable interface for this provider IDataServicePagingProvider wrapper object. Instance which implements IDataServiceStreamProvider interface. Instance which implements IDataServiceExecutionProvider interface. Reference to the wrapper for the IDataServiceActionProvider interface. Instance of the data provider. Gets the context of the current batch operation. Processing pipeline events Use this class to add settings that define service behavior. The conventions to use when generating and parsing URLs. Initializes a new . Applies the settings from the configuration file. The features section from the configuration file. Gets or sets whether to invoke change interceptors when a link is deleted. True when interceptors should be invoked; otherwise false. Gets or sets whether requests with the $count path segment or the $inlinecount query options are accepted. True if count requests are supported; otherwise false. Gets or sets whether projection requests should be accepted. True if projection requests are supported; otherwise false. Gets or sets whether the server will accept requests with filters that contain all or any expressions. True when the server accepts all or any expressions; otherwise false. Gets or sets the maximum protocol version that is supported by the response sent by the data service. The maximum version allowed in the response. Get or sets whether relationship links are included in responses from the data service. True when relationship links are returned; otherwise false. Get or sets whether to use the order of key properties as defined in the metadata of an Entity Framework or reflection provider when constructing an implicit OrderBy query. True when the order of key properties is inferred from the provider metadata and false when an alphabetical order is used. Gets or sets whether spatial literal values are supported in the URI. True when spatial literals are supported in the URI; otherwise false. Allow replace functions in the request url. The conventions to use when generating and parsing URLs. If set to true, then the root element of each payload will be written in the default (non-prefix-qualified) namespace of the document. All other elements in the same namespace will also not have prefixes. Gets a value indicating whether to generate keys as segments based on the user-specified URL conventions. Return false for V1/V2 servers because we should ignore the IncludeAssociationLinksInResponse settings for V1/V2 servers. Otherwise, return whatever value has been set for the knob. Use this class to manage the configuration data for a data service. Use this interface to modify the configuration of a web data service. Sets the access rules for the specified entity set. The name of the entity set for configured access. The rights allowed for the entity set. Sets the access rules for the specified service operation. The name of the service operation on which to set access rights. The rights allowed according to enumeration. Registers a resource type for use by the data service. The resource type to register. Gets the maximum number of requests that can be handled in a batch. Integer value that indicates the maximum number of requests that can be handled in a batch. Gets the maximum number of change sets that can be handled in a batch. Integer value that indicates the maximum number of change sets that can be handled in a batch. Gets or sets the maximum number of segments that can be expanded by the $expand query option for all requests to the data service. The maximum number of segments to expand. Gets or sets a maximum number of segments supported in a single $expand path for all requests to the data service. Integer representing the maximum number of supported segments in $expand path. Gets the maximum number of results per collection. The integer value that indicates the maximum number of results per collection. Gets or sets the maximum number of objects that can be inserted in a single request. The integer value that contains the maximum number of objects that can be inserted in a single request. Gets or sets whether verbose errors are used by default for all responses from the data service. A Boolean value that indicates whether verbose errors are returned. This property sets the default for the whole service; individual responses may behave differently depending on the value of the VerboseResponse property of the arguments to the HandleException method on the class. Gets or sets whether the data model is validated before it is written as a response to a request to the metadata endpoint. true when metadata validation is disabled; otherwise false. A lookup of containers to their rights. For IDSP there is no guarantee that the provider will always return the same metadata instance. We should use the name instead of the instance as key since the configuration is cached across requests. A lookup of service operations to their rights. For IDSP there is no guarantee that the provider will always return the same metadata instance. We should use the name instead of the instance as key since the configuration is cached across requests. A lookup of service action to their rights. For IDSP there is no guarantee that the provider will always return the same metadata instance. We should use the name instead of the instance as key since the configuration is cached across requests. A lookup of resource sets to their page sizes. For IDSP there is no guarantee that the provider will always return the same metadata instance. We should use the name instead of the instance as key since the configuration is cached across requests. A list of known types. Holds configuration of service behavior List of fully qualified type names that were marked as visible by calling EnableAccess(). Whether this configuration has been sealed. Maximum number of change sets and query operations in a batch. Maximum number of changes in a change set. Maximum number of segments to be expanded allowed in a request. Maximum number of segments in a single $expand path. Maximum number of elements in each returned collection (top-level or expanded). maximum number of objects that can be referred in a single insert request. The provider for the web service. Rights used for unspecified resource sets. Rights used for unspecified service operations. Rights used for unspecified service actions. Page size for unspecified resource sets Whether verbose errors should be returned by default. Perform type conversion from the type specified in the payload to the actual property type. Specifies whether the EDM model should be validated before it is written as a response to a $metadata request. This is set to true if EnableAccess("*") is called. False otherwise. Initializes a new with the specified . Non-null provider for this configuration. Sets the permissions for the specified entity set resource. The Name of the entity set for which to set permissions. The Access rights to be granted to this resource, passed as an value. Sets the permissions for the specified service operation. The name of the service operation for which to set permissions. The access rights to be granted to this resource, passed as a value. Sets the permissions for the specified service action. The name of the service action for which to set permissions. The access rights to be granted to this action, passed as a value. Adds a type to the list of types that are recognized by the data service. The type to add to the collection of known types. Sets the maximum page size for an entity set resource. The name of entity set resource for which to set the page size. The page size for the entity set resource that is specified in . Registers a data type with the data service runtime so that it can be used by a custom data service provider. The namespace-qualified name of the type that is enabled for use with the custom data service provider. This method is used to register a type with the Astoria runtime which may be returned in the “open properties” of an open type such that the type is visible in $metadata output and usable with CRUD operations. The typename parameter must be a namespace qualified type name (format: <namespace>.<typename>). The name provided must be as it would show up in a CSDL document (ie. model types, not CLR types) The types registered via calls to EnableAccess will be additive to those implicitly made accessible via DSC.SetEntitySetAccessRule(…) invocations • Note: The Astoria runtime layer won’t be able to determine if a typename specified maps to an Entity Type, Complex Type, etc until it actually obtains type info (entity types, complex types, etc) from the underlying provider • “*” can be used as the value of ‘typename’, which will be interpreted as matching all types When Astoria enumerates types or needs to obtain a type (Complex Types, Entity Types) from the underlying provider it will first determine if the type should be visible (show in $metadata and accessible via operations exposed by the service) as per the standard v1 checks (ie. driven by SetEntitySetAccessRule calls). If the type is not visible via V1 rules, then we consult the set of types registered via EnableAccess(<typename>) invocations. If the type was included in such a call then the type is visible via $metadata and can be accessed via CRUD ops, etc. If a type is not made visible via one of the mechanisms above, then: • That type must not be included a response to a $metadata request • Instances of the type must not be returned to the client as the response of a request to the data service. If such a type instance would be required the service MUST fail the request. Failure semantics are covered in the area of the specification which covers request/response semantics with respect to open types. Invoking this method multiple times with the same type name is allowed and considered a “NO OP”. Composes all query interceptors into a single expression. Web service instance. Container for which interceptors should run. An expression the filter for query interceptors, possibly null. Composes the specified for the given with authorization callbacks. Data service on which to invoke method. resource set to compose with. Query to compose. The resulting composed query. Checks whether this request has the specified rights. Container to check. Required rights. Thrown if aren't available. Checks whether this request has the specified reading rights. Container to check. Whether a single or multiple resources are requested. Thrown if aren't available. Checks whether this request has the specified rights. Operation to check. Required rights. Thrown if aren't available. Checks whether this request has the specified rights. Operation to check. Whether a single or multiple resources are requested. Thrown if aren't available. Gets a string with methods allowed on the target for the . configuration object which has the data Description with target. A string with methods allowed on the description; possibly null. Gets a string representation of allowed methods on the container (with the specified target cardinality), suitable for an 'Allow' header. configuration object which has the data Targetted container, possibly null. Description with target. A value for an 'Allow' header; null if is null. Gets the effective rights on the specified container. Container to get rights for. The effective rights as per this configuration. Gets the effective rights on the specified operation. Operation to get rights for. The effective rights as per this configuration. Gets the effective rights on the specified action. Action to get rights for. The effective rights as per this configuration. Gets the page size per entity set Entity set for which to get the page size Page size for the Returns the list of types registered by the data service. The list of types as registered by the data service Get the list of access enabled resourceType names. List of namespace qualified resourceType names that were marked as visible by calling EnableAccess(). Initializes the DataServiceConfiguration instance by: 1. Invokes the static service initialization methods on the specified type family. 2. Register authorization callbacks specified on the given . Type of service to initialize for. Seals this configuration instance and prevents further changes. This method should be called after the configuration has been set up and before it's placed on the metadata cache for sharing. Validated if server options used by the service are compatible with MaxProtocolVersion Indicates whether the metadata includes annotations true if the metadata includes annotations; false otherwise. Appends the of a right if the right is enabled on . Rights to be checked. Right being looked for. Name of right to append. Comma-separated list of right names to append to. Invokes the static service initialization methods on the specified type family. Type of service to initialize for. Checks that the specified for the named property is not negative and that the configuration isn't sealed. Value to check. Parameter name. The to set. This method is typically used in properties with the following pattern: public int Foo { get {... } set { this.foo = this.CheckNonNegativeProperty(value, "Foo"); } } Checks that this configuration hasn't been sealed yet. Gets or sets whether the data service runtime should convert the type that is contained in the payload to the actual property type that is specified in the request. True if the data service runtime should convert the type that is contained in the payload; otherwise, false. Gets or sets the maximum number of change sets and query operations that are allowed in a single batch. The maximum number of change sets. Gets or set the maximum number of changes that can be included in a single change set. The maximum number of changes allowed. Gets or sets the maximum number of related entities that can be included in a single request by using the $expand operator. The maximum number of related entities. Get or sets the maximum number of related entities that can be included in an $expand path in a single request. The maximum depth of an $expand path. Get or sets the maximum number of items in each returned collection. The maximum number of items. Get or sets the maximum number of objects to insert that can be contained in a single POST request. The maximum number of objects to insert. Builds the annotation models to be applied to the data model of the provider. The annotation models to be applied. Builds the annotation models to be applied to the provider's EDM model (driven by ). The input to the Func is the provider's model (so the returned annotations can reference it). Only annotations within the returned models are considered; any other schema elements are ignored. Gets or sets whether the verbose errors should be returned by the data service. True if the verbose errors should be returned by the data service; otherwise, false. This property sets the default for the whole service; individual responses may behave differently depending on the value of the VerboseResponse property of the arguments to the HandleException method on the class. Gets a object that defines the additional behaviors of the data service. The additional behaviors of the data service. Gets or sets whether the data model is validated before it is written as a response to a request to the $metadata endpoint. True when metadata validation is disabled; otherwise false. The default value for this property is 'false'. True if all resource types have been made visible by calling EnableAccess("*"). False otherwise. Whether size of a page has been defined. The exception that is thrown when an error occurs while processing a web data service request. The DataServiceException is thrown to indicate an error during request processing, specifying the appropriate response for the request. RFC2616 about the status code values: 1xx: Informational - Request received, continuing process "100" ; Section 10.1.1: Continue "101" ; Section 10.1.2: Switching Protocols 2xx: Success - The action was successfully received, understood, and accepted "200" ; Section 10.2.1: OK "201" ; Section 10.2.2: Created "202" ; Section 10.2.3: Accepted "203" ; Section 10.2.4: Non-Authoritative Information "204" ; Section 10.2.5: No Content "205" ; Section 10.2.6: Reset Content "206" ; Section 10.2.7: Partial Content 3xx: Redirection - Further action must be taken in order to complete the request "300" ; Section 10.3.1: Multiple Choices "301" ; Section 10.3.2: Moved Permanently "302" ; Section 10.3.3: Found "303" ; Section 10.3.4: See Other "304" ; Section 10.3.5: Not Modified "305" ; Section 10.3.6: Use Proxy "307" ; Section 10.3.8: Temporary Redirect 4xx: Client Error - The request contains bad syntax or cannot be fulfilled "400" ; Section 10.4.1: Bad Request "401" ; Section 10.4.2: Unauthorized "402" ; Section 10.4.3: Payment Required "403" ; Section 10.4.4: Forbidden "404" ; Section 10.4.5: Not Found "405" ; Section 10.4.6: Method Not Allowed "406" ; Section 10.4.7: Not Acceptable "407" ; Section 10.4.8: Proxy Authentication Required "408" ; Section 10.4.9: Request Time-out "409" ; Section 10.4.10: Conflict "410" ; Section 10.4.11: Gone "411" ; Section 10.4.12: Length Required "412" ; Section 10.4.13: Precondition Failed "413" ; Section 10.4.14: Request Entity Too Large "414" ; Section 10.4.15: Request-URI Too Large "415" ; Section 10.4.16: Unsupported Media Type "416" ; Section 10.4.17: Requested range not satisfiable "417" ; Section 10.4.18: Expectation Failed 5xx: Server Error - The server failed to fulfill an apparently valid request "500" ; Section 10.5.1: Internal Server Error "501" ; Section 10.5.2: Not Implemented "502" ; Section 10.5.3: Bad Gateway "503" ; Section 10.5.4: Service Unavailable "504" ; Section 10.5.5: Gateway Time-out "505" ; Section 10.5.6: HTTP Version not supported Contains the state of this exception. Initializes a new instance of the class with a system-supplied message that describes the error. The Message property is initialized to a system-supplied message that describes the error. This message takes into account the current system culture. The StatusCode property is set to 500 (Internal Server Error). Initializes a new instance of the class with a specified message that describes the error. The message that describes the exception. The caller of this constructor is required to ensure that this string has been localized for the current system culture. The StatusCode property is set to 500 (Internal Server Error). Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception. The message that describes the exception. The caller of this constructor is required to ensure that this string has been localized for the current system culture. The exception that is the cause of the current exception. The StatusCode property is set to 500 (Internal Server Error). Initializes a new instance of the class. The HTTP status code returned by the exception. The error message for the exception. Initializes a new instance of the class. The HTTP status code of the exception. The string value that contains the error code. The string value that contains the error message. The string value that indicates the language of the error message. The exception that is the cause of the current exception. Creates a new "Bad Request" exception for recursion limit exceeded. Recursion limit that was reaced. A new exception to indicate that the request is rejected. Creates a new "Bad Request" exception for recursion limit exceeded. A new exception to indicate that the request is rejected. Creates a new "Forbidden" exception. A new exception to indicate that the request is forbidden. Creates a new "Resource Not Found" exception. segment identifier information for which resource was not found. A new exception to indicate the requested resource cannot be found. Creates a new "Resource Not Found" exception. Plain text error message for this exception. A new exception to indicate the requested resource cannot be found. Creates a new exception to indicate a syntax error. A new exception to indicate a syntax error. Creates a new exception to indicate a syntax error. Plain text error message for this exception. A new exception to indicate a syntax error. Creates a new exception to indicate Precondition error. Plain text error message for this exception. A new exception to indicate a Precondition failed error. Creates a new exception to indicate Precondition error. Plain text error message for this exception. Inner Exception. A new exception to indicate a Precondition failed error. Creates a new exception to indicate BadRequest error. Plain text error message for this exception. A new exception to indicate a bad request error. Creates a new exception to indicate BadRequest error. Plain text error message for this exception. Inner Exception. A new exception to indicate a bad request error. Creates a new "Method Not Allowed" exception. Error message. String value for 'Allow' header in response. A new exception to indicate the requested method is not allowed on the response. Creates a new exception to indicate MethodNotImplemented error. Plain text error message for this exception. A new exception to indicate a MethodNotImplemented error. Gets the error code. The integer value that represents the error code. Gets the error message language. The string value that represents the message language. Gets the HTTP status code returned by the exception. HTTP status code for the exception. 'Allow' response for header. Contains the state of the exception, used for serialization in security transparent code. Called when deserialization of the exception is complete. The deserialized exception. Gets or sets the language for the exception message. Gets or sets the error code to be used in payloads. Gets or sets the HTTP response status code for this exception. Gets or sets the 'Allow' response for header. This structure supports the .NET Framework infrastructure and is not intended to be used directly from your code. Provides a host for services of type DataService. Instantiates for WCF Data Services. Identifies the WCF Data Services to the host. The URI of the host. This structure supports the .NET Framework infrastructure and is not intended to be used directly from your code. This class is used to hook up a WCF as a raw HTTP handler. Creates a new from the URI. The new . The type of WCF service to host. An array of base addresses for the service. Event argument class for DataServiceProcessingPipeline events. Context for the operation which the current event is fired for. Constructs a new instance of DataServicePipelineEventArgs object Context for the operation which the current event is fired for. Gets the context of the operation that raised the event. A that is the operation context. Class declaring the events for the data service processing pipeline Assert ProcessingPipeline state before any event has been fired Assert ProcessingPipeline state at DataService<T>.OnStartProcessingRequest Assert ProcessingPipeline state before disposing provider interfaces Assert Processing Pipeline state during request processing data service operation context instance Assert Processing Pipeline state when IDataServiceExecutionProvider.Execute() is called. data service instance Assert Processing Pipeline state during request processing Assert Processing Pipeline state at SaveChanges Assert Processing Pipeline state at InvokeServiceAction data service instance Need to be able to reset the states since the caller can reuse the same service instance. Invoke request start event Sender, i.e. data service instance. event arg Invoke request end event Sender, i.e. data service instance. event arg Invoke change set start event Sender, i.e. data service instance. event arg Invoke change set end event Sender, i.e. data service instance. event arg Request start event Request end event Change set start event Change set end event Use this class to handle writing body contents using a callback. Service to dispose data source from once the response is written. Callback. Initializes a new instance. Callback for writing. Service to dispose data source from once the response is written. Called when the message body is written to an XML file. An that is used to write this message body to an XML file. Use this class to write to an . Target writer. Initializes a new instance. Target writer. Clears all buffers for this stream and causes any buffered data to be written to the underlying device. Reads a sequence of bytes from the current stream and advances the position within the stream by the number of bytes read. An array of bytes. When this method returns, the buffer contains the specified byte array with the values between and ( + - 1) replaced by the bytes read from the current source. The zero-based byte offset in at which to begin storing the data read from the current stream. The maximum number of bytes to be read from the current stream. The total number of bytes read into the buffer. Sets the position within the current stream. A byte offset relative to the parameter. A value of type indicating the reference point used to obtain the new position. The new position within the current stream. Sets the length of the current stream. New value for length. Writes a sequence of bytes to the current stream and advances the current position within this stream by the number of bytes written. An array of bytes. This method copies bytes from to the current stream. The zero-based byte offset in buffer at which to begin copying bytes to the current stream. The number of bytes to be written to the current stream. Gets a value indicating whether the current stream supports reading. Gets a value indicating whether the current stream supports seeking. Gets a value indicating whether the current stream supports writing. Gets the length in bytes of the stream. Gets or sets the position within the current stream. Build attribute names corresponding to ones in csdl file Current index PostFix for current attribute names Constructor Move to next attribute name generation KeepInContent SourcePath Target Path ContentKind Namespace Prefix Namespace Uri This class contains code for translating epm information stored in Metadata properties to objects of EpmPropertyInformation class !!! THIS CODE IS USED BY System.Data.Services.Providers.ObjectContextProvider *AND* System.Data.EntityModel.Emitters CLASSES !!! Gets EPM information for a property of a type Member that could contain EPM information IEnumerable of EPM information for the member, if any. Gets EPM information for a type Type that could contain EPM information IEnumerable of EPM information for the type, if any. Obtains the epm information for a single property by reading csdl content StructuralType or EdmMember to get EPM information for Type for which we are reading the metadata properties Member for which we are reading the metadata properties. Can be null if reading from a type instead of a member. EpmPropertyInformation corresponding to read metadata properties Class for holding de-serialized Epm attribute from csdl file Syndication mapping or custom mapping KeepInContent SourcePath Was path provided or inferred TargetPath Target syndication item when IsAtom is true Target syndication item content kind when IsAtom is true Namespace prefix when IsAtom is false Namespace Uri when IsAtom is false Representation of each node in the Name of the property under the parent resource type This fields is used to diferentiate between some special node types as well. - null - this is the root node of the source tree. - "" (empty string) - this is a node representing a value of a primitive item in a collection property. - anything else - this is a node representing a property with the name of this field. List of sub-properties if this segment corresponds to a complex type Constructor creates a root source path segment Constructor creates a source path segment with the name set to Segment property name Name of the property under the parent resource type This property is used to diferentiate between some special node types as well. - null - this is the root node of the source tree. - "" (empty string) - this is a node representing a value of a primitive item in a collection property. - anything else - this is a node representing a property with the name of this property. These values should not be compared directly, instead use the IsCollectionItemValue property to differentiate between the last two. The root node itself should never be accessed directly so far. List of sub-properties if this segment corresponds to a complex type Corresponding EntityPropertyMappingInfo Tree representing the sourceName properties in all the EntityPropertyMappingAttributes for a resource type Root of the tree corresponding to this tree Default constructor creates a null root Target xml tree Adds a path to the source and target tree which is obtained by looking at the EntityPropertyMappingAttribute in the EnitityPropertyMappingInfo holding the source path the declared properties for the currentType Validates the source tree. The resource type for which the validation is performed. The declaredProperties of the declaredPropertiesResourceType. Validates the specified segment and all its subsegments. The path segment to validate. The resource type of the property represented by this segment (null for open properties). The dictionary to lookup and add declaredProperties associated with resourceTypes. Looks up the declaredProperties in the dictionary, or gets them and adds to the dictionary The resource type to look for the properties on. The dictionary of declaredProperties. The declaredProperties to use for the given resourcType. Returns a resource type of the property on the specified resource type. The resource type to look for the property on. The name of the property to look for. The dictionary of resourceTypes to declaredProperties. The type of the property specified. Note that for collection properties this returns the type of the item of the collection property. Root of the tree Representation of each node in the Name of the xml element/attribute This field is used to differentiate between special nodes as well. - null - this is the root of the target tree. - anything else (doesn't start with @) - this node represents an element with the specified name. - anything else (starts with @) - this node represents an attribute with the specified name. URI of the namespace to which the belongs If this is a non-leaf element, the child elements/attributes collection Parent element of this element/attribute Constructor initializes the list of sub-nodes to be empty, used for creating root nodes in the Used for creating non-root nodes in the syndication/custom trees Name of xml element/attribute URI of the namespace for Reference to the parent node if this is a sub-node, useful for traversals in visitors Name of the xml element/attribute This property is used to differentiate between special nodes as well. - null - this is the root of the target tree. - anything else (doesn't start with @) - this node represents an element with the specified name. - anything else (starts with @) - this node represents an attribute with the specified name. The value of the proeprty should not be compared directly to differentiate between these cases, instead properties IsAttribute and IsElementContentSegment should be used. The root not should not be accessed directly from anywhere so far. Retruns name of the attribute the property is mapped to. Must not be called if a property is mapped to an element. URI of the namespace to which the belongs EntityPropertyMappingInfo corresponding to current segement Whether this node corresponds to ResourceType or ClientType property values Does this node correspond to xml attribute Parent node in the tree (always an element if present) Sub-nodes of this node. Only exist if current node is an element node Tree representing the targetName properties in all the EntityPropertyMappingAttributes for a resource type Number of properties that have V2 mapping with KeepInContent false Initializes the sub-trees for syndication and non-syndication content Adds a path to the tree which is obtained by looking at the EntityPropertyMappingAttribute in the EnitityPropertyMappingInfo holding the target path Removes a path in the tree which is obtained by looking at the EntityPropertyMappingAttribute in the EnitityPropertyMappingInfo holding the target path Validates the target tree. This also cleans up the tree if necessary. Checks if mappings could potentially result in mixed content and dis-allows it. Segment being processed. Does any of the ancestors have content. boolean indicating if the tree is valid or not. Given an gives the correct target path for it Given String with the correct value for the target path Root of the sub-tree for syndication content Root of the sub-tree for custom content Minimum DSPV required to serialize this target tree. Helper class for translating Epm enum values to strings and strings to Epm enum values. SyndicationItemProperty enum to FC_TargetPath mapping. FC_TargetPath to SyndicationItemProperty enum mapping. Initialize mappings Translates syndication item property to string Syndication property to translate TargetPath corresponding to SyndicationItemProperty Given a gets the corresponding syndication property. Target path in the form of syndication property name Enumerated value of a SyndicationItemProperty or SyndicationItemProperty.CustomProperty if the does not map to any syndication property name. Translates content kind to string for csdl ContentKind String corresponding to contentKind Given the string representation in gets back the corresponding enumerated value String representation of syndication content kind e.g. plaintext, html or xhtml Type to which the property belongs Name of the member whose extended properties we are searching from Enumerated value of SyndicationTextContentKind Attribute to be annotated on types with ETags. Name of the properties that form the ETag. Initializes a new instance of the class. The string value containing properties used in eTag value. Initializes a new instance of the class. String values containing properties used in eTag value. Gets the names of properties used in the . String collection containing property names. Strongly-typed and parameterized exception factory. Strongly-typed and parameterized exception factory. create and trace a HttpHeaderFailure error code error message DataServiceException Trace the exception type of the exception exception object to trace the exception parameter The exception that is thrown when a null reference (Nothing in Visual Basic) is passed to a method that does not accept it as a valid argument. The exception that is thrown when the value of an argument is outside the allowable range of values as defined by the invoked method. The exception that is thrown when the author has yet to implement the logic at this point in the program. This can act as an exception based TODO tag. The exception that is thrown when an invoked method is not supported, or when there is an attempt to read, seek, or write to a stream that does not support the invoked functionality. Provides support for orchestrating error handling at different points in the processing cycle and for serializing structured errors. The maximum number of nested inner errors to write. Arguments for the exception being handled. Response version. Content type and charset to use when writing the error. Content type to use when writing the error. Encoding to use when writing the error. Prevents a default instance of the class from being created. The exception to be written. if set to true indicates verbose errors should be written. The response version. The acceptable content types. The request accept charset header. Handles an exception when processing a batch response. Data service doing the processing. requestMessage holding information about the request that caused an error responseMessage to which we need to write the exception message Exception thrown. Output writer for the batch. Underlying response stream. The data service version to use for response, if it cannot be computed from the requestMessage. Handles an exception when processing a batch request. Data service doing the processing. Exception thrown. Output writer for the batch. Underlying response stream. Handles an exception before the response has been written out. Exception thrown. Data service doing the processing. An action that can serialize the exception into a stream. Handles an exception that occurred while writing a response. Data service doing the processing. The exception that was thrown. The response message. The message writer, if null this will fall back to writing a raw XML error to the stream. The encoding to while writing the error. The response stream to write the error to. MessageWriterBuilder to use in case a new ODataMessageWriter needs to be constructed. Handles the specified . Exception to handle The caller should re-throw the original exception if this method returns normally. Check to see if the given excpetion is a benign one such as statusCode = 304. If yes we return an action that can serialize the exception into a stream. Other wise we return null. Exception to be processed Data service instance An action that can serialize the exception into a stream. Gets the content type for error serialization based on the accept header and version. The accept header value. The response version. The content type to use for the error response. Gets the encoding for error serialization based on the accept charset header. The request accept charset header. The encoding to use. Creates an error handler for the given exception. The service. The request message. The exception. The default/minimum response version. The newly created error handler. Writes the error with fallback logic for XML cases where the writer is in an error state and a new writer must be created. The message writer. The encoding to use for the error if we have to fallback. The response stream to write to in the fallback case. The args for the error. The error to write. MessageWriterBuilder to use if a new ODataMessageWriter needs to be constructed. Provides a description of a segment in an $expand query option for a WCF Data Service. INTERNAL Expand providers may replace segments to indicate a different expansion shape. However, they are unable to set the MaxResultsExpected. The value for the instances created by external providers will always be Int32.MaxValue, but the value enforced by the serializers will be the one declared by the data service in the configuration. When the configuration supports a more granular value, we should overload the constructor to make the MaxResultsExpected property settable as well. Container to which the segment belongs; possibly null. Filter expression for this segment on an $expand path. Name for this segment on an $expand path. Property being expanded. The maximum number of results expected for this property; Int32.MaxValue if no limit is expected. Collection of ordering information for this segment, used for paging Target resource type of the segment. Initializes an object with the specified property name and a filtering expression, possibly null. The name of the segment to be expanded. The filter option in the query to which the expand segment applies. Initializes a new instance. Segment name. Filter expression for segment, possibly null. Expand providers may choose to return at most MaxResultsExpected + 1 elements to allow the data service to detect a failure to meet this constraint. Container to which the segment belongs; possibly null. Target resource type on which the expansion needs to happen. Property expanded by this expand segment Collection of ordering information for this segment, used for paging A Boolean value that indicates whether any segments in the specified have a filter. True if any of the segments in the path has a filter; false otherwise. The enumeration of segments to check for filters. Checks that the specified filter is of the right type. Filter to check. The filter option in the query to which the expand segment applies. An expression that specifies the filter on target data. A Boolean value that indicates whether the expand statement is used with a filter expression. True or false. Gets the maximum number of results expected. The integer value that indicates maximum number of results. Expand providers may choose to return at most MaxResultsExpected + 1 elements to allow the data service to detect a failure to meet this constraint. The name of the property to be expanded. A string value containing the name of the property. Gets the property to be expanded. The property to expand. Collection of ordering information for this segment, used for paging Gets the container to which this segment belongs; possibly null. The resource type for which needs to be projected. Making this internal since we do not want to support this feature on IExpandProvider which is sort of deprecated. Provides a description of a path in an $expand query option for a WCF Data Service. Creates a collection of expand segments for a query. Initializes a new collection of expand segments that is empty and has the specified initial capacity. The number of expand segments that the new collection can initially store. Boolean value that indicates whether segments to be expanded include a filter clause. Boolean value that indicates whether segments to be expanded include a filter clause. Use this class to customize how exceptions are handled. Initalizes a new instance. The being handled. Whether the response has already been written out. The MIME type used to write the response. Whether a verbose response is appropriate. Creates an ODataError instance describing the error. A new ODataError instance describing the error. Gets or sets the exception that will be processed and returned in the response. The exception that will be processed and returned in the response. This property may be null. Gets the response content type. The string value that indicates the response format. Gets a value indicating whether the response has been written. Boolean value that indicates whether response has been written. Gets or sets a Boolean value that indicates whether verbose errors will be returned. The Boolean value that indicates whether verbose errors will be returned. Gets the status code that will be sent back in the HTTP header section of the response when an error occurs on the data service. An integer value of the HTTP response status code. Collection of custom values that will be written in the error payload as instance annotations. These values will only be serialized in JSON. Collection of custom values that will be written in the error payload as instance annotations. These values will only be serialized in JSON and if any instance annotation is added to the InstanceAnnotations collection, the CustomAnnotations property is ignored during serialization, The value for the 'Allow' response header. Provides access to the environment for a DataService, including information about the current request, based on the current WebOperationContext. Message sent to server. The WCF-based operation context. Whether an error was found when processing this request. Gets the absolute URI to the resource upon which to apply the request. Gets the absolute URI to the service. Initializes a new System.Data.Services.HttpContextServiceHost instance. Incoming message body to process. Gets the value for the specified item in the request query string. Item to return. The value for the specified item in the request query string; null if is not found. Method to handle a data service exception during processing. Exception handling description. Gets the value of a given item from the query string item collection. Name of the item to get from the query string. Collection of query string item/value pairs. Value of the query item, or null if it is not present. Verifies that all query parameters are valid. Collection of query string item/value pairs. Verifies that query parameters are valid. Check to see if the given status code expects an empty message-body. Http status code True if the message-body must be empty for the given status code, false otherwise. Updates the header remove header if null. The header collection. The response header. The header value. Updates the header remove header if null. The header collection. The response header. The header value. Gets the character set encoding that the client requested, possibly null. Gets or sets the HTTP MIME type of the output stream. Gets the HTTP MIME type of the input stream. Gets a comma-separated list of client-supported MIME Accept types. Gets the HTTP data transfer method (such as GET, POST, or HEAD) used by the client. Gets the value of the If-Match header from the request made Gets the value of the If-None-Match header from the request made Gets the value for the MaxDataServiceVersion request header. Gets the value for the DataServiceVersion request header. Gets the absolute URI to the resource upon which to apply the request. Gets or sets the Cache-Control header on the response. Gets/Sets the value of the ETag header on the outgoing response Gets or sets the Location header on the response. Gets/Sets the status code for the request made. Gets the to be written to send a response to the client. Gets or sets the value for the DataServiceVersion response header. Gets the absolute URI to the service. Gets the from which the request data can be read from to the client. Dictionary of all request headers from the host. Enumerates all response headers that has been set. Whether an error was found when processing this request. The value for the RequestMessage header in the request, possibly null. Provides helper methods for processing HTTP requests. UTF-8 encoding, without the BOM preamble. While a BOM preamble on UTF8 is generally benign, it seems that some MIME handlers under IE6 will not process the payload correctly when included. Because the data service should include the encoding as part of the Content-Type in the response, there should be no ambiguity as to what encoding is being used. For further information, see http://www.unicode.org/faq/utf_bom.html#BOM. Allowable Media Types for an Entity or Feed in V2. Allowable Media Types for something besides an Entity or Feed in V2. Allowable Media Types for Entities or Feeds in V3. Allowable Media Types for something other than Entities or Feeds in V3. Selects an acceptable MIME type that satisfies the Accepts header. Text for Accepts header. Types that the server is willing to return, in descending order of preference. The best MIME type for the client Gets the appropriate MIME type for the request, throwing if there is none. Text as it appears in an HTTP Accepts header. Preferred content type to match if an exact media type is given - this is in descending order of preference. Preferred fallback content type for inexact matches. One of exactContentType or inexactContentType. Gets the best encoding available for the specified charset request. The Accept-Charset header value (eg: "iso-8859-5, unicode-1-1;q=0.8"). An Encoding object appropriate to the specifed charset request. Selects a response format for the requestMessage's request and sets the appropriate response header. A comma-delimited list of client-supported MIME accept types. Whether the target is an entity. The effective max response version. The selected media type. Does a ordinal ignore case comparision of the given mime types. mime type1. mime type2. returns true if the mime type are the same. Determines whether the response media type would be JSON light for the given accept-header text. The text from the request's accept header. Whether the target is an entity. The effective max response version. True if the response type is Json Light. Determines whether the response media type would be JSON light for the request. The data service instance to determine the response media type. true if the target of the request is an entry or a feed, false otherwise. true if the response type is Json Light; false otherwise Determines whether the response content type is a JSON-based format. The response content-type. true if the content-type is JSON; otherwise, false. Reads a Content-Type header and extracts the MIME type/subtype and encoding. The Content-Type header. The MIME type in standard type/subtype form, without parameters. Encoding (possibly null). parameters of content type Gets the named encoding if specified. Name (possibly null or empty). The named encoding if specified; the encoding for HTTP missing charset specification otherwise. See http://tools.ietf.org/html/rfc2616#section-3.4.1 for details. Creates a new exception for parsing errors. Message for error. A new exception that can be thrown for a parsing error. Returns the list of available media types. The effective max response version of the request. true if the response will contain an entity or feed. A list of recognized media types. Verfies whether the specified character is a valid separator in an HTTP header list of element. Character to verify. true if c is a valid character for separating elements; false otherwise. "Reads" a literal from the specified string by verifying that the exact text can be found at the specified position. Text within which a literal should be checked. Index in text where the literal should be found. Literal to check at the specified position. true if the end of string is found; false otherwise. Converts the specified character from the ASCII range to a digit. Character to convert. The Int32 value for c, or -1 if it is an element separator. Returns all MIME types from the specified (non-blank) . Non-blank text, as it appears on an HTTP Accepts header. An enumerable object with media type descriptions. Reads the numeric part of a quality value substring, normalizing it to 0-1000 rather than the standard 0.000-1.000 ranges. Text to read qvalue from. Index into text where the qvalue starts. After the method executes, the normalized qvalue. For more information, see RFC 2616.3.8. Enumerates each charset part in the specified Accept-Charset header. Non-null and non-empty header value for Accept-Charset. A (non-sorted) enumeration of CharsetPart elements, which include a charset name and a quality (preference) value, normalized to 0-1000. Reads the type and subtype specifications for a MIME type. Text in which specification exists. Pointer into text. Type of media found. Subtype of media found. Reads a media type definition as used in a Content-Type header. Text to read. The defined by the specified All syntactic errors will produce a 400 - Bad Request status code. Reads a token on the specified text by advancing an index on it. Text to read token from. Index for the position being scanned on text. true if the end of the text was reached; false otherwise. Skips whitespace in the specified text by advancing an index to the next non-whitespace character. Text to scan. Index to begin scanning from. true if the end of the string was reached, false otherwise. Read a parameter for a media type/range. Text to read from. Pointer in text. Array with parameters to grow as necessary. Reads Mime type parameter value for a particular parameter in the Content-Type/Accept headers. Name of parameter. Header text. Parsing index in . String representing the value of the parameter. Determines whether the specified character is a valid HTTP separator. Character to verify. true if c is a separator; false otherwise. See RFC 2616 2.2 for further information. Determines whether the specified character is a valid HTTP header token character. Character to verify. true if c is a valid HTTP header token character; false otherwise. Encoding to fall back to an appropriate encoding is not available. Encoding implied by an unspecified encoding value. See http://tools.ietf.org/html/rfc2616#section-3.4.1 for details. Provides a struct to encapsulate a charset name and its relative desirability. Name of the charset. Charset quality (desirability), normalized to 0-1000. Initializes a new CharsetPart with the specified values. Name of charset. Charset quality (desirability), normalized to 0-1000. Class to store media parameter information. Creates a new instance of MediaParameter. Name of the parameter. Value of the parameter. True if the value of the parameter is quoted, otherwise false. Gets the original value of the parameter. the original value of the parameter. Gets the name of the parameter. Value of the parameter. true if the value is quoted, otherwise false. Use this class to represent a media type definition. Parameters specified on the media type. Sub-type specification (for example, 'plain'). Type specification (for example, 'text'). Initializes a new read-only instance. Type specification (for example, 'text'). Sub-type specification (for example, 'plain'). Parameters specified on the media type. Gets a number of non-* matching types, or -1 if not matching at all. Candidate MIME type to match. The number of non-* matching types, or -1 if not matching at all. Gets a number of non-* matching types, or -1 if not matching at all. Candidate MIME type to match. The number of non-* matching types, or -1 if not matching at all. Searches for the parameter with the given name and returns its value. name of the parameter whose value needs to be returned. returns the value of the parameter with the given name. Returns null, if the parameter is not found. Selects a quality value for the specified type. The quality value, in range from 0 through 1000. See http://tools.ietf.org/html/rfc2616#section-14.1 for further details. Selects the encoding appropriate for this media type specification (possibly null). The encoding explicitly defined on the media type specification, or the default encoding for well-known media types. As per http://tools.ietf.org/html/rfc2616#section-3.7, the type, subtype and parameter name attributes are case-insensitive. Returns the MIME type in standard type/subtype form, without parameters. media type parameters This interface declares the methods required to support the $expand query option for a WCF Data Service. Applies expansions to the specified parameter. An object of the same type as the supplied object that includes the specified . The object to expand. A collection of paths to expand. This method may modify the to indicate which expansions are included. The returned may implement the interface to provide enumerable objects for the expansions; otherwise, the expanded information is expected to be found directly in the enumerated objects. This interface declares the methods required to support enumerators for results and for associated segments on a WCF Data Service $expand query option. Gets the value for a named property of the result. The value of the property. The name of the property for which to get enumerable results. If the element returned in turn has properties which are expanded out-of-band of the object model, then the result will also be of type , and the value will be available through . Gets the element with expanded properties. The object in a property expanded by . This interface declares the methods required to support getting values from projected results for $select queries Gets the value for named property for the result. Name of property for which to get the value. The value for the named property of the result. The full name of the which represents the type of this result. Array of predefined projected wrappers for small number of properties. When we need to project more properties than these allow we will use the . Array of projected propery names used for fast lookup based on the projected property index. The full name of the type Text list of property names, in comma-separated format. The position of each property name determines the index of the projected property which holds the value of that property. Some slot may be empty denoting that the projected property is not used for this instance. Parsed list property names. Gets the value of the named property for the result. The value for the named property of the result. Name of property for which to get the value. Returns the type of the with the specified number of projected properties. The number of properties to project in the wrapper. The type of the projected wrapper to use (note that it might have room for more properties!) Creates an array of objects which bind the projected properties to the expressions passed in . Array of expressions to bind to properties on the projected wrapper. The expression at index 0 will be bound to the ResourceTypeName property. The expression at index 1 will be bound to the PropertyNameList property. The expression at index 2 + i will be bound to the ith projected property. The type of the projected wrapper to use. You should get this by calling the method. An array of bindings which bind the specified expression to the properties on the projected wrapper. If the specified resource is this method will returned a wrapped instance which will turn all special "null" instances of ProjectedWrapper in the enumeration results into the true null values. Otherwise this method simply returns the resource untouched. The resource to wrap. The original resource or wrapped resource if it was . Note that we don't expect that the enumeration of results might return result which itself will be enumeration (nested enumerations). We handle this case through the ExpandedWrapper instance instead. Helper method which checks the specified resource and if it is the special "null" ProjectedWrapper value it will turn it into a true null. Otherwise it returns the original value. The resource to check for nullness. The original value, or null if the value was representing null value. Unwraps which might be wrapped to report null values correctly. If the input is not wrapped it returns the original enumerator. The enumerator to unwrap. The unwrapped enumerator. Returns a wrapping which will turn all special "null" instances of ProjectedWrapper in the enumeration results into true null values. The to wrap. Newly created wrapped for the specified . Gets the value for the specified property by its index. The value for the property. Index of the property for which to get the value. Binds the ResourceTypeName and PropertyNameList properties to the first two expressions. The type of the projected wrapper to bind to. Items 0 and 1 will be filled with the bindings in this array. The expressions to bind - only items 0 and 1 are used. Binds specified expression to a projected propety of a given index. The type of the projected wrapper to bind to. The index of the projected property to bind to. The expression to bind to the property. The newly create binding expression. Binds projected epxressions to the object. Array of expressions to bind. Index of the first expression in the to bind. Array to fill with the bindings. Index of the first slot in to fill. Gets the full name of the that represents the type of this result. The full name of the type. Gets a list of property names as text in a comma-separated format. List of comma-separated names. Wrapper around which replaces special "null" instances of ProjectedWrapper in the results with true null values. Wrapper around which replaces special "null" instances of ProjectedWrapper in the results with true null values. The this object is wrapping. Constructor. The enumerable to wrap. Gets a new enumerator. The newly created . Gets a new enumerator. The newly created . The this object is wrapping. Constructor. The queryable to wrap. The type of the single element which is returned as a result of the query. The expression tree for this query. The query provider - not support as it should never be called. Wrapper around which replaces special "null" instances of ProjectedWrapper in the results with true null values. The this object is wrapping. Constructor. The enumerator to wrap. Moves the enumerator to the next result. true if next result is available, false otherwise. Resets the enumerator. Disposes the object. Returns the current result on which the enumerator is positioned. Returns the inner enumerator thic object is wrapping. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Gets or sets the property to project. The property to project. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Provides a wrapper over result element with the ability to project a subset of properties. Gets the value for the specified property by its index. The value for the property. Index of the property for which to get the value. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets the property to project. The property to project. Gets or sets another instance of which contains the set of the next eight projected properties, and possibly another link. The next set of properties. Instance of this class is assigned to the last in the list. This trick is necessary for Entity Framework to work correctly, as it can't project null into the Next property. Gets the value for the property specified by its index. Index of the property for which to get the value. The value for the property. Expression visitor class which provides recognission of property access This class understands all the different ways WCF Data Services can use to access a property value in the generated query. The class is meant to be inherited for expression tree processing where property accesses are interesting. Note that it assumes that the expression tree looks the way WCF Data Services generate it. Noticable that all the GetValue method calls get the property parameter as a node. This may mean that if there were some rewrites applied to the tree, the class may not recognize the property accesses anymore. MethodCallExpression visit method The MethodCallExpression expression to visit The visited MethodCallExpression expression MemberExpression visit method The MemberExpression expression to visit The visited MemberExpression expression Dervied class will override them method to process any property accesses found in the tree. The name of the property being accessed. The expression on which the property is being accessed. The implementation may choose to return a different expression through this ref parameter. If the method returns true, the is null and the method changed this parameter, the caller will replace the operand in the original property access with the new expression provided in this parameter. The way the property is accessed and its name remains the same. The entire expression of the property access. The implementation may choose to return a different expression through this ref parameter. If the method returns true and this parameter is not null the caller will replace the entire property access expression with the new one passed in this parameter. If the method returns false it means that it is not interested in this property access, and the processing of the tree will continue by examining the children of the property access expression. If the method returns true the caller looks at the returned value of . If it is not-null it will replace the entire property access expression with it. If it's null it will just replace the operand of the property access with the . If the implementation wants to skip this property access without modification it should return true and not modify the ref parameters. If the method returns true the caller will not continue walking the children of the property access expression. It's the responsibility of the implementation to do so if it requires such functionality. Attribute to be annotated on types with ETags. Name of the properties that form the ETag. Initializes a new instance of the class. A string value that contains the property or properties to be attributed. Initializes a new instance of the class. A string value that contains the property or properties to be attributed. Validate and get the list of properties specified by this attribute on the given type. clr type on which this attribute must have defined. whether we need to inherit this attribute or not. For context types,we need to, since we can have one context dervied from another, and we want to ignore all the properties on the base ones too. For resource types, we don't need to, since we don't want derived types to know about ignore properties of the base type. Also from derived type, you cannot change the definition of the base type. binding flags to be used for validating property names. list of property names specified on IgnoreProperties on the given type. Gets the property name or names to controlled by the attribute. This class implements IEqualityComparer for System.In32. Using this class rather than EqualityComparer<T>.Default saves from JIT'ing it in each AppDomain. Checks whether two numbers are equal. First number.Second number. true if x equals y; false otherwise. Gets a hash code for the specified number. Value. The hash code for the specified value. Provides a base class implementing IExpandedResult over projections. Type of element whose properties are expanded. Text description of properties, in comma-separated format. Text description of reference properties, in comma-separated format. Element whose properties are being expanded. Parsed property names. names of properties that are Reference properties Returns the value of the expanded property. The value of the property. The name of the property. If the element returned in turn has properties which are expanded out-of-band of the object model, then the result will also be of type , and the value will be available through . A special case is the handling of $skiptoken property. In case the $skiptoken property does not exist on the current wrapper object, instead of throw-ing we return null which will be an indication to the caller that the property does not exist. Returns a property object of the expanded property. The property value. The index of the property. Gets or sets the description for the . The description of the . Gets or sets the reference description, which used to display the wrapper. The reference description used to display the wrapper. If unset, assume there are none. Gets or sets the element with expanded properties. The object in a property expanded by . The element with expanded properties. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a wrapper over an element expanded with projections. Type of expanded element. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. Type of projected property. This class supports the WCF Data Services infrastructure and is not meant to be used directly from your code. Gets the value for the named property for the result. Name of property for which to get enumerable results. The value for the named property of the result. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Get or sets the property to expand. The property to expand. Provides a class used to parse a skip-token or etag. Attempts to parse nullable values (only positional values, no name-value pairs) from the specified text. Text to parse (not null). After invocation, the parsed skiptoken/etag values as strings. true if the given values were parsed; false if there was a syntactic error. The returned collection contains only string values. They must be converted later. Use this attribute on a DataService service operation method or a data object property to indicate than the type returned is of a specific MIME type. Name of the attributed method or property. MIME type for the attributed method or property. Initializes a new instance of the class. The name of the attribute. The MIME type of the attribute. Gets the name of the attribute. A string value that contains the name of the attribute. Gets the MIME type of a request. A string that contains the MIME type. Visitor to evaluate if skip tokens are needed for a given Resource type for which we are evaluating ordering expressions Resource property to which the ordering expression corresponds Initializes a new instance. Initializes a new instance. Resource type for which we are evaluating ordering expressions Finds out if the given required a skip token expression in the expansion Input orderingInfo. true if skip token expression is needed, false otherwise Obtains a collection of resource properties that are needed for skip token generation Input orderingInfo. Resource type for which to collect the skip token properties Collection of resource properties used in $skiptoken Override the method to decide if we need skip token expression in the expansion Input expression Output expression which is the same as input expression for this visitor Override for member access visitor Member access expression Same expressions as Override for parameter expression Parameter expression Same parameter as True of skiptoken is required for this instance, false otherwise Resource property to which the ordering expression corresponds IODataRequestMessage interface implementation. Reference to the IDataServiceHost object we are wrapping Delegation object to figure out the acceptable content types based on $format and accept header. Gets a comma-separated list of client-supported MIME Accept types. Gets the string with the specification for the character set encoding that the client requested, possibly null. Gets the value of the If-Match header from the request made Gets the value of the If-None-Match header from the request made Gets the value for the MinDataServiceVersion request header. Gets the value for the DataServiceVersion request header. The value of the DataServiceVersion header as a string. Get the enum representing the http method name. We have this for perf reason since enum comparison is faster than string comparison. Gets the HTTP data transfer method (such as GET, POST, or HEAD) used by the client. Gets the absolute URI to the resource upon which to apply the request. Gets the absolute URI to the service. Gets the from which the input must be read to the client. Request headers Whether or not the request and service URI have been marked as read-only. true if this.InitializeRequestVersionHeaders() has been called; false otherwise. Creates a new instance of AstoriaRequestMessage. IDataServiceHost instance to access all the request headers. Creates a new instance of AstoriaRequestMessage. This is meant to be a constructor for unit tests only. IDataServiceHost instance to access all the request headers. Object to select acceptable content types. Returns the value of the given request header. Name of the request header. Returns the value of the given request header. Sets the value of the given request header. Since on Astoria Server we are reading requests and all headers are initialized at construction time, we don't implement this method. Name of the request header. Value for the header to be set. Returns the stream to which request payload needs to be written. Returns the stream to which request payload needs to be written. Method to implement a custom URL resolution scheme. This method returns null if no custom resolution is desired. If the method returns a non-null URL that value will be used without further validation. The (optional) base URI to use for the resolution. The URI read from the payload. A instance that reflects the custom resolution of the method arguments into a URL or null if no custom resolution is desired; in that case the default resolution is used. Checks whether the given object instance is of type T. object instance. type which we need to cast the given instance to. Returns strongly typed instance of T, if the given object is an instance of type T. If the given object is not of Type T. Copies over the headers that we cache from the host into this classes fields. This method should be called after we fire the events that let users alter request headers. Gets a comma-separated list of client-supported MIME Accept types. A comma-seperated list of content types the client can accept. Gets the value for the specified item in the request query string. Item to return. The value for the specified item in the request query string; null if is not found. Method to handle a data service exception during processing. Exception handling description. update the request version header, if it is not specified. protocol version as specified in the config. Verifies that query parameters are valid. Extracts the MinDSV header information from the wrapped host. Returns the minimum data service version if the MinDataServiceVersion header is present; null if the header is not on the request. Gets the value of custom header if IDSH2 is implemented, otherwise returns null. Name of the custom header. The header value if IDSH is implemented, or null otherwise. Makes the AbsoluteServiceUri and AbsoluteRequestUri properties to be read-only. Should only be called immediately after the OnStartProcessingRequest method returns. Validate the given header value and return the Version instance equivalent to the string header value. If the version header is not specified, then this method returns the max known version. name of the request header. value of the request header. Version instance containing the version header information. Converts the list of known data service version to a comma's separated string. restricts the values in the result string. Restricts the values in the result string Comma separated known version list. Returns the maximum allowed request version. The max protocol version specified in the service. The maximum allowed request version. Extracts and sets the MinDSV from the request header. protocol version as specified in the config. Returns the minimum data service version that the client can understand. Validates that the given URI is non-null and absolute, then saves it as the absolute request URI. The absolute request uri to validate and cache. Whether or not to validate that the query string has not changed from the host's value. Validates that the given URI is non-null and absolute, then saves it as the absolute service URI. The absolute service uri to validate and cache. Gets all the request headers. The URL of the request. The method of the request. The Content-Type header, this property allows the caller to override the value comming from the host. Get the enum representing the http method name. http method used for the request. enum representing the http method name. Gets the absolute resource upon which to apply the request. Gets the absolute URI to the service. Gets the HTTP data transfer method (such as GET, POST, or HEAD) used by the client. Gets the value for the RequestVersion request header. Gets the value for the MinDataServiceVersion request header. If the header is not specified or if MPV less than 3.0, it returns the min known version. Gets the value for the MaxDataServiceVersion request header. If the header is not specified, it returns the max known version. Gets the from which the input must be read to the client. Request headers If the wrapped host is a HttpContextServiceHost, returns the host If the wrapped host is a BatchServiceHost, returns the batch host Use this class to perform late-bound operations on open properties. MethodInfo for Add. MethodInfo for AndAlso. MethodInfo for Convert. MethodInfo for Divide. MethodInfo for Equal. MethodInfo for GreaterThan. MethodInfo for GreaterThanOrEqual. MethodInfo for LessThan. MethodInfo for LessThanOrEqual. MethodInfo for Modulo. MethodInfo for Multiply. MethodInfo for Negate. MethodInfo for Not. MethodInfo for NotEqual. MethodInfo for OrElse. MethodInfo for Subtract. MethodInfo for TypeIs. MethodInfo for object OpenTypeMethods.GetValue(this object value, string propertyName). Gets a value from the specified property of a specified object. The requested value; null if the value cannot be determined. Object from which to get the property value. Name of property from which to get the value. Adds two values. The result of the arithmetic operation. First value to add. Second value to add. Performs a logical and operation between two expressions. The result of the logical and operation. Left value. Right value. Divides two values. The divided value. The first value (dividend). The second value (divisor). Determines whether the specified objects are considered equal. true when both objects are equal; otherwise, false. The first object to compare. The second object to compare. Determines whether the value of one object is greater than another object. true if the value of the first object is greater than that of the second object; otherwise, false. The first value. The second value. Determines whether the value of one object is greater than or equal to another object. true when the value of the first object is greater than or equal to that of the second object; otherwise, false. The first value. The second value. Determines whether the value of one object is less than another object. true if the value of the first object is less than that of the second object; otherwise, false. The first value. The second value. Determines whether the value of one object is less than or equal to another object. true if the value of the first object is less than or equal to that of the second object; otherwise, false. The first value. The second value. Calculates the arithmetic remainder of dividing one value by a second value. The remainder value. The first value (dividend). The second value (divisor). Multiplies two values. The product of the two values. The first value. The second value. Performs a logical comparison of the two values to determine if they are not equal. true if both objects are not equal; otherwise, false. The first value. The second value. Performs a logical OR operation on two values. The result of the logical OR operation. The first value. The second value. Subtracts two values. The result of the arithmetic operation. First value in the subtraction. Second value in the subtraction. Returns the result of multiplying the specified value by negative one. The product of multiplied by negative one. The value to negate. Performs a bitwise (logical) complement operation on the supplied value. A bitwise complement of the supplied value. Value to logically complement. Converts a value to the specified type. The converted value. Value to convert. Resource type for the conversion. Checks the type of a specified value. true if the value is of the specified resource type; otherwise, false. The value to check. Resource type for which to check. Concatenates two string values. A new instance that is the concatenated string. The first string. The second string. Determines whether the end of one string matches another string. true when ends with ; otherwise, false. The string being compared. The string to compare to. Returns the index of a substring in the target string. The index of the location of in the . The target string. The substring to find. (1) Gets the number of characters in the supplied string object. or (2) the open type signatures of geo.length(GeometryLineString) or geo.length(GeographyLineString) method (1) The length of the string value. (2) geometry or geography line's length (primitive double) (1) The string to be checked (2) GeometryLineString / GeographyLineString. Replaces one substring with a second substring in a target string. A new string with the substring replaced with the new substring. The string with the substring to replace. The substring to be replaced. The new substring. Checks whether the target string starts with the substring. true if the target string starts with the given substring; otherwise, false. The string being compared. The substring that the might start with. Returns the substring after the specified starting index location. The substring. The string from which to return the substring. The starting index for the substring. Returns the substring of a specific length after the specified starting index location. The substring. The string from which to return the substring. The starting index for the substring. The length of the substring. Determines whether a substring occurs in another string. true if occurs in ; otherwise, false. The substring to locate. The string to search. Returns a copy of a string converted to lowercase. A new string value with only lowercase. The string to convert. Returns a copy of a string converted to uppercase. A new string value with only uppercase characters. The string to convert. Removes all leading and trailing white-space characters from a string. The trimmed string. The string to trim. Returns the year value of the given instance. The year value of the given instance. A object. Returns the month value of the given instance. The month value of the given instance. A object. Returns the day value of the given instance. The day value of the given instance. A object. Returns the hour value of the given instance. The hour value of the given instance. A object. Returns the minute value of the given instance. The minute value of the given instance. A object. Returns the second value of the given instance. The second value of the given instance. A object. Returns the ceiling of the given value. The ceiling value for the given value. A or object. Returns the floor of the given value. Returns the floor value for the given object. The or object to evaluate. Rounds the supplied value. The rounded value. A or to round. Returns the distance between the specified objects. The distance between the specified objects. The first object. The second object. Returns if pint and polygon will intersect. The distance between the specified objects. The first object, point. The second object, polygon. Creates an expression that adds two values with no overflow checking. Left value.Right value. The added value. Creates a call expression that represents a conditional AND operation that evaluates the second operand only if it has to. Left value.Right value. The conditional expression; null if the expressions aren't of the right type. Creates an expression that divides two values. Left value.Right value. The divided value. Creates an expression that checks whether two values are equal. Left value.Right value. true if left equals right; false otherwise. Creates an expression that checks whether the left value is greater than the right value. Left value.Right value. true if left is greater than right; false otherwise. Creates an expression that checks whether the left value is greater than or equal to the right value. Left value.Right value. true if left is greater than or equal to right; false otherwise. Creates an expression that checks whether the left value is less than the right value. Left value.Right value. true if left is less than right; false otherwise. Creates an expression that checks whether the left value is less than or equal to the right value. Left value.Right value. true if left is less than or equal to right; false otherwise. Creates an expression that calculates the remainder of dividing the left value by the right value. Left value.Right value. The remainder value. Creates an expression that multiplies two values with no overflow checking. Left value.Right value. The multiplication value. Creates a call expression that represents a conditional OR operation that evaluates the second operand only if it has to. Left value.Right value. The conditional expression; null if the expressions aren't of the right type. Creates an expression that checks whether two values are not equal. Left value.Right value. true if left is does not equal right; false otherwise. Creates an expression that subtracts the right value from the left value. Left value.Right value. The subtraction value. Creates an expression that negates (arithmetically) the specified value. Value expression. The negated value. Creates an expression that negates (logically) the specified value. Value expression. The negated value. Checks whether the specified is part of an open property expression. Non-null to check. true if is based on an open property; false otherwise. Checks if the given input expression refers to open types. Input expression. true if the input is an open expression, false otherwise. Strips all Expression.Convert(object) calls from the input expression. Input expression. First non-Convert expression inside Converts that converts to non-object type. Returns the specified with a type assignable to System.Object. Expression to convert. The specified with a type assignable to System.Object. Utility methods to work with the Expression type. Constant for "null" literal. Constant for "false" literal. MethodInfo for Queryable.Where MethodInfo for Queryable.OfType MethodInfo for Queryable.Select MethodInfo for Queryable.SelectMany MethodInfo for Queryable.OrderBy MethodInfo for Queryable.OrderByDescending MethodInfo for Queryable.ThenBy MethodInfo for Queryable.ThenByDescending MethodInfo for Queryable.Take MethodInfo for Queryable.Skip MethodInfo for Queryable.LongCount MethodInfo for Enumerable.Where MethodInfo for Enumerable.OfType MethodInfo for Enumerable.Select MethodInfo for Enumerable.SelectMany MethodInfo for Enumerable.OrderBy MethodInfo for Enumerable.OrderByDescending MethodInfo for Enumerable.ThenBy MethodInfo for Enumerable.ThenByDescending MethodInfo for Enumerable.Take MethodInfo for Enumerable.Skip MethodInfo for Enumerable.Cast MethodInfo for Enumerable.All MethodInfo for Enumerable.Any() MethodInfo for Enumerable.Any(predicate) MethodInfo for Enumerable.Empty MethodInfo for IQueryProvider.CreateQuery Checks whether is a null constant. Expression to check. true if is a null constant; false otherwise. Prepare the given expression for passing as a predicate to a filter function i.e. Queryable.Where()/Enumerable.Any()/Enumerable.All(). Input expression. Expression converted to boolean expression. Returns a method call expression to the Empty method Target type Expression calling the Empty method Rewrites an expression to propagate null values if necessary. Expression to check for null. Expression to yield if does not yield null. The possibly rewriteen . Composes a property navigation with the appropriate filter lamba, as appropriate. Member access expression to compose. Lambda expression used for the filter. Whether null propagation is required on the . Whether represent a single resource navigation. The composed expression. Returns the element type of the expression. Source expression. Returns the element type of the expression. Applies Queryable.Where() to . Source expression. Predicate to pass to Queryable.Where(). New expression with Queryable.Where() applied. Applies Queryable.Select() to . Source expression. Selector to pass to Queryable.Select(). New expression with Queryable.Select() applied. Applies Queryable.SelectMany() to . Source expression. Selector to pass to Queryable.SelectMany(). New expression with Queryable.SelectMany() applied. Applies Queryable.OfType() to . Source expression. Target type to pass to Queryable.OfType(). New expression with Queryable.OfType() applied. Applies Queryable.OrderBy() to . Source expression. KeySelector to pass to Queryable.OrderBy(). New expression with Queryable.OrderBy() applied. Applies Queryable.OrderByDescending() to . Source expression. KeySelector to pass to Queryable.OrderByDescending(). New expression with Queryable.OrderByDescending() applied. Applies Queryable.ThenBy() to . Source expression. KeySelector to pass to Queryable.ThenBy(). New expression with Queryable.ThenBy() applied. Applies Queryable.ThenByDescending() to . Source expression. KeySelector to pass to Queryable.ThenByDescending(). New expression with Queryable.ThenByDescending() applied. Applies Queryable.Take() to . Source expression. Take count. New expression with Queryable.Take() applied. Applies Queryable.Skip() to . Source expression. Skip count. New expression with Queryable.Skip() applied. Applies Queryable.LongCount() to . Source expression. New expression with Queryable.LongCount() applied. Invokes the generic version of CreateQuery on the . Source expression. instance. instance. Applies Enumerable.Where() to . Source expression. Predicate to pass to Enumerable.Where(). New expression with Enumerable.Where() applied. Applies Enumerable.Select() to . Source expression. Selector to pass to Enumerable.Select(). New expression with Enumerable.Select() applied. Applies Enumerable.SelectMany() to . Source expression. Selector to pass to Enumerable.SelectMany(). New expression with Enumerable.SelectMany() applied. Applies Enumerable.OfType() to . Source expression. Target type to pass to Enumerable.OfType(). New expression with Enumerable.OfType() applied. Applies Enumerable.OrderBy() to . Source expression. KeySelector to pass to Enumerable.OrderBy(). New expression with Enumerable.OrderBy() applied. Applies Enumerable.OrderByDescending() to . Source expression. KeySelector to pass to Enumerable.OrderByDescending(). New expression with Enumerable.OrderByDescending() applied. Applies Enumerable.ThenBy() to . Source expression. KeySelector to pass to Enumerable.ThenBy(). New expression with Enumerable.ThenBy() applied. Applies Enumerable.ThenByDescending() to . Source expression. KeySelector to pass to Enumerable.ThenByDescending(). New expression with Enumerable.ThenByDescending() applied. Applies Enumerable.Take() to . Source expression. Take count. New expression with Enumerable.Take() applied. Applies Enumerable.Skip() to . Source expression. Skip count. New expression with Enumerable.Skip() applied. Applies Enumerable.Cast to . Source expression Target type Expression with Enumerable.Cast() applied. Applies Enumerable.All to . Source expression Predicate to pass to Enumerable.All() Expression with Enumerable.All() applied. Applies Enumerable.Any to . Source expression Expression with Enumerable.Any() applied. Applies Enumerable.Any() to . Source expression Predicate to pass to Enumerable.Any() Expression with Enumerable.Any() applied. Compose Where() to expression Where MethodInfo Source expression Predicate expression Expression with Where() Compose SelectMany() to expression SelectMany MethodInfo Source expression Selector expression Expression with SelectMany() Call generic method MethodInfo Source expression Target type New expression with method call. Call generic method MethodInfo Source expression selector expression New expression with method call. Call generic method MethodInfo Source expression Take count New expression with method call. Call generic method MethodInfo Source expression New expression with method call. Call generic method MethodInfo Source expression Predicate to pass to the method New expression with method call. Replaced the type of input parameter with the given Input lambda expression. Type of the new parameter that will be replaced. New lambda expression with parameter of new type. Helper method to get the MethodInfo from the body of the given lambda expression. Result type of . Lambda expression. Returns the MethodInfo from the body of the given lambda expression. MethodInfo for Queryable.Where MethodInfo for Queryable.OfType MethodInfo for Queryable.Select MethodInfo for Queryable.SelectMany MethodInfo for Queryable.OrderBy MethodInfo for Queryable.OrderByDescending MethodInfo for Queryable.ThenBy MethodInfo for Queryable.ThenByDescending MethodInfo for Queryable.Take MethodInfo for Queryable.Skip MethodInfo for Queryable.LongCount MethodInfo for Enumerable.Where MethodInfo for Enumerable.OfType MethodInfo for Enumerable.Select MethodInfo for Enumerable.SelectMany MethodInfo for Enumerable.OrderBy MethodInfo for Enumerable.OrderByDescending MethodInfo for Enumerable.ThenBy MethodInfo for Enumerable.ThenByDescending MethodInfo for Enumerable.Take MethodInfo for Enumerable.Skip MethodInfo for Enumerable.Cast MethodInfo for Enumerable.All MethodInfo for Enumerable.Any() MethodInfo for Enumerable.Any(predicate) MethodInfo for Enumerable.Empty MethodInfo for IQueryProvider.CreateQuery Use this class to look at the request uri and doing some custom validation. Initalizes a new instance. Context about the current operation being processed. Gets the URI of an HTTP request to be process. A that contains the URI of the request to be processed. The absolute base URI of the service. Gets a Boolean value that indicates whether the HTTP request to the data service is a batch operation. The Boolean value that indicates whether the HTTP request to the data service is a batch operation. Gets the context that contains information about the current operation being processed. An object that contains information about the current operation. Use this type to represent a parameter on a service action. Use this type to represent a parameter on an operation. Empty parameter collection. Parameter name. Parameter type. true if the operation parameter is set to readonly i.e. fully initialized and validated. No more changes can be made, after this is set to readonly. Initializes a new . Name of parameter. resource type of parameter value. Sets this service operation parameter to readonly. Name of parameter. Type of parameter values. PlaceHolder to hold custom state information about service operation parameter. Returns true, if this parameter has been set to read only. Otherwise returns false. Empty parameter collection. Initializes a new . Name of parameter. resource type of parameter value. Use this class to represent a custom service operation. Use this class to represent a custom service operation. The binding parameter to this function/action; null if this function/action is top-level or this operation is not a function or action. The kind of the operation parameter binding - (Never, Sometimes, Always) Return type of the operation. Protocol (for example HTTP) method the service operation responds to. In-order parameters for this operation. Kind of result expected from this operation. name of the service operation. Entity set from which entities are read, if applicable. Path expression to calculate the result resource set of the function if the function returns an entity or a collection of entity. The kind of the current service operation. MIME type specified on primitive results, possibly null. Is true, if the service operation is set to readonly i.e. fully initialized and validated. No more changes can be made, after the service operation is set to readonly. Initializes a new instance. name of the operation. Kind of result expected from this operation. Return type of the operation. EntitySet of the result expected from this operation, must be null if is not null. Path expression to calculate the result set of the operation, must be null if is not null. Protocol (for example HTTP) method the service operation responds to. In-order parameters for this operation. the kind of the operation parameter binding (Never, Sometimes, Always). The kind of the current service operation. Set this service operation to readonly. Returns the based on the of the operation. The return type of the operation. true if further composition is allowed after calling this operation; false otherwise. Returns the based on the of the operation. Ensures the operation has been marked read-only. Validates arguments to the constructor. Name of the operation. Return type of the operation. EntitySet of the result expected from this operation, must be null if is not null. Path expression to calculate the result set of the operation, must be null if is not null. Protocol (for example HTTP) method the service operation responds to. the kind of the operation parameter binding (Never, Sometimes, Always). The kind of the current service operation. Validates the input parameters and convert it to a read only collection of parameters. the kind of the operation parameter binding (Never, Sometimes, Always). In-order parameters for this operation. A read only collection of parameters. Throws an InvalidOperationException if this service operation is already set to readonly. Protocol (for example HTTP) method the service operation responds to. MIME type specified on primitive results, possibly null. Name of the service operation. PlaceHolder to hold custom state information about service operation. Returns true, if this service operation has been set to read only. Otherwise returns false. Entity set from which entities are read (possibly null). Returns all the parameters for the given service operations. Kind of result expected from this operation. Element type of the operation result. If the return type is a collection type, this is the item type of the return type; otherwise this is the same as return type. For example if the operation returns an IEnumerable<string>, the return type would be of type Collection(Edm.String) and this property would be of type Edm.String. Return type of the operation. Note that if this property is a collection type, the ResultType property is the item type of this property; otherwise the ResultType property is the same as this property. For example if the operation returns an IQueryable<Customer>, this property would be of type Collection(Customer) and the ResultType property would be of type Customer. Path expression to calculate the result resource set of the function if the function returns an entity or a collection of entity. The binding parameter to this function/action; null if this function/action is top-level or this operation is not a function or action. The kind of the operation parameter binding - (Never, Sometimes, Always). If the first parameter of the operation is a binding parameter then the value must be set to OperationParameterBindingKind.Sometimes or OperationParameterBindingKind.Always. If the first parameter is not a binding parameter then the value must be set to OperationParameterBindingKind.Never. If the value is set to OperationParameterBindingKind.Always then the IDataServiceActionProvider.AdvertiseServiceAction method will not be called for the action and the action will be always advertised by the default convention. The kind of the current service operation In-order parameters for this operation. Creates a new instance of the service operation. Name of the service operation. that is the kind of result expected from this operation. that is the result of the operation. that is the result of the operation. Protocol method to which the service operation responds. Ordered collection of objects that are parameters for the operation. Gets the return type of the operation. Type of element of the method result. This is the item type of the return type if the return type is a collection type. Kind of result expected from this operation. Returns the return type of the operation. Collection of in-order parameters for the service operation. A of objects. The kind of result that is expected by this service operation. that is the kind of result expected from this operation. Type of results returned by this service operation. Type of the results as a . If the return type is a collection type, this is the item type of the return type; otherwise this is the same as return type. Wrapper class for IDataServiceActionProvider interface. An empty array of ServiceOperationWrapper. An empty list of ServiceOperationWrapper. The provider wrapper to use for finding other providers, caching operations, etc. The max prototol version of the service. Delegate to retrieve the current operation operation context. Note that we do not cache the operation context itself because it can change in $batch cases. Action provider instance, or null if one was not found. Action resolution provider instance, or null if one was not found. Set to true when we attempted to load the action provider the first time so we don't try to load it repeatedly when the interface is not implemented. Maps a resource type to a collection of actions bindable to that resource type. Maps a base resource type to a collection of actions bindable to any of the resource types in that type hierarchy. Constructs the wrapper class for IDataServiceActionProvider The provider. The max protocol version of the service. A delegate to retrieve the current operation context when invoking a provider API. Creates a new instance of . The data service provider wrapper. The max protocol version of the service. A delegate to retrieve the current operation context when invoking a provider API. A new instance of . Creates a new instance of . The data service. A new instance of . Get the from the given . SegmentInfo instance for the service action. The from the given . Updates the RequestEnumerable of with the actual results from the invokable. SegmentInfo instance for the service action. Returns all service actions in the provider. An enumeration of all service actions. Tries to find the for the given . The name of the service action to resolve. This must be the non-fully-qualified action name. Call DataServiceProviderWrapper.GetNameFromContainerQualifiedName() before calling this method. The binding type of the action, or null if it is unknown. Returns the service action instance if the resolution is successful; null otherwise. Builds up an instance of for the given with the provided . The service action to invoke. The parameter tokens required to invoke the service action. An instance of to invoke the action with. Gets the set of actions bound to any type in the hierearchy, and caches the results. The starting type of the hierarchy. The operations bound to any type in the hierearchy. Gets a collection of actions having or any of it's base types as the binding parameter type. Instance of the binding parameter resource type () in question. A list of actions having as the binding parameter type. Determines whether a given should be advertised as bindable to the given . Service action to be advertised. Instance of the resource to which the service action is bound. true if the resource instance to be serialized is inside a feed; false otherwise. The value true suggests that this method might be called many times during serialization since it will get called once for every resource instance inside the feed. If it is an expensive operation to determine whether to advertise the service action for the , the provider may choose to always advertise in order to optimize for performance. The to be serialized. The server constructs the version passed into this call, which may be replaced by an implementation of this interface. This should never be set to null unless returning false. true if the service action should be advertised; false otherwise. Gets the set of actions bound to any of the given binding parameter types. The binding parameter types. The operations bound to any of the specified types. Gets the set of actions bound to the specific parameter type, either from the cache or by calling the provider. The binding parameter type. The cache of known actions, used to detect duplicates. The operations bound to the specific type. Tries to load an implementation of IDataServiceActionProvider from the service. Return true if successful; false otherwise. true if successfully loaded an implementation of IDataServiceActionProvider; false otherwise. Validates if a service action is advertisable. Resource type to which the service action is bound to. Service action to be validated for advertisement. The current set of actions. Used to avoid duplicate actions. Validated service operation to be advertised. Null, if the service operation is not suppose to be advertised. Tries to resolve the action by invoking TryResolveServiceAction on the underlying provider. This is a lower-level call which does not cache results. Caching should be provided by the caller. The name of the service action taken from a segment of the URI. The current binding type of the action, or null if there is no binding type. The action if one is returned from the provider. Whether or not the provider returned an action for the given inputs. Gets a value indicating whether the action provider is implemented on the service. Maps a resource type to a collection of actions bindable to that resource type. Maps a base resource type to a collection of actions bindable to any of the resource types in that type hierarchy. Gets the IDataServiceActionProvider instance. Gets the current operation context. Note that we do not cache the operation context because it can change in $batch cases, and this property may return a different instance. Interface to allow substitution of for unit testing . Validates if the service operation should be visible and is read only. If the service operation rights are set to None the service operation should not be visible. Operation to be validated. Validated service operation, null if the service operation is not supposed to be visible. Add the given service operation to the model. ServiceOperationWrapper instance to add. Tries to find a cached wrapper for an operation with the given name and binding parameter type. The operation name. The operation's binding parameter's type, or null. The wrapper, if found. Whether or not a wrapper was found. Retrieve an implementation of a data service interface (ie. IUpdatable, IExpandProvider,etc) The type representing the requested interface An object implementing the requested interface, or null if not available Gets all the types in the types's hierarchy. This includes both the base types, the derived types, and the starting type. The starting type. The types derived from or base of the starting type. Default implementation of which delegates directly to . The provider wrapper. Initializes a new instance of . The provider wrapper. Validates if the service operation should be visible and is read only. If the service operation rights are set to None the service operation should not be visible. Operation to be validated. Validated service operation, null if the service operation is not supposed to be visible. Add the given service operation to the model. ServiceOperationWrapper instance to add. Tries to find a cached wrapper for an operation with the given name and binding parameter type. The operation name. The operation's binding parameter's type, or null. The wrapper, if found. Whether or not a wrapper was found. Retrieve an implementation of a data service interface (ie. IUpdatable, IExpandProvider,etc) The type representing the requested interface An object implementing the requested interface, or null if not available Gets all the types in the types's hierarchy. This includes both the base types, the derived types, and the starting type. The starting type. The types derived from or base of the starting type. This interface declares the methods required to support invoking of an operation. Invokes the underlying operation. Gets the result of the call to Invoke. The result of the call to Invoke. This interface declares the methods required to support ServiceActions. Return a collection of instances that represent the service actions implemented by the WCF Data Service. An enumeration of all service actions. The data service operation context instance. Attempts to retrieve the instance for the specified service action. true if the resolution is successful; false otherwise. The data service operation context instance. The name of the service action to resolve. Returns the service action instance if the resolution is successful; null otherwise. Gets a collection of service actions that match the specified binding parameter type. A collection of instances. The data service operation context instance. The binding parameter resource type () in question. Creates an instance of for the specified service action. An instance of The data service operation context instance. The T:System.Data.Services.Providers.ServiceAction instance that represents the service action to invoke. The parameters required to invoke the service action. Determines whether a given should be advertised as bindable to the given . The data service operation context instance. Service action to be advertised. Instance of the resource to which the service action is bound. true if the resource instance to be serialized is inside a feed; false otherwise. The value true suggests that this method might be called many times during serialization since it will get called once for every resource instance inside the feed. If it is an expensive operation to determine whether to advertise the service action for the , the provider may choose to always advertise in order to optimize for performance. The to be serialized. The server constructs the version passed into this call, which may be replaced by an implementation of this interface. This should never be set to null unless returning false. true if the service action should be advertised; false otherwise. Default internal implementation of IDataServiceExecutionProvider. Interface to be implemented by providers who want to support actions and functions. Invokes an expression that represents the full request. An expression that includes calls to one or more MethodInfo or one or more calls to IDataServiceUpdateProvider2.InvokeAction(..) or IDataServiceQueryProvider2.InvokeFunction(..) Current context. The result of the invoked expression. Invokes an expression that represents the full request. An expression that includes calls to one or more MethodInfo or one or more calls to IDataServiceUpdateProvider2.InvokeAction(..) or IDataServiceQueryProvider2.InvokeFunction(..) Current context. The result of the invoked expression. An internal enumeration to track the differnt states of the metadata caching and materialization. We use a tri-state enumeration instead of a boolean flag since the URI parser will look up entity sets and service operations which don't require the full metadata but will require the entity containers. Incremental materialization state. Full materialization state. Data service methods that can be inside the expression that is passed to the IDataServiceExecutionProvider interface. MethodInfo for TypeIs. MethodInfo for SetContinuationToken. MethodInfo for ApplyProjections. MethodInfo for IDataServiceActionProvider.CreateInvokable(). Filters the given based on the . Type of the IQueryable instance passed in . Type representing the resource type passed in . IQueryable instance. ResourceType based on which IQueryable needs to be filtered. an IQueryable instance filtered by ResourceType. Forwards the call to the SetContinuationToken method on to give the continuation token ($skiptoken) from the request URI, parsed into primitive values, to the provider. Element type of the query. An instance of . Query for which continuation token is being provided. Resource type of the result on which skip token is to be applied. Continuation token parsed into primitive typed values. Returns after calling SetContinuationToken. This method simply forwards the call to IDataServicePagingProvider.SetContinuationToken(). This method is added because IDataServicePagingProvider.SetContinuationToken() returns void and this method returns so that we can call SetContinuationToken() in the expression tree without using the Block expression, to make the expression tree simpler to visit. Applies expansions and projections to the specified . IProjectionProvider instance. object to expand and apply projections to. The root node of the tree which describes the projections and expansions to be applied to the . Determine if the current Response format needs epm values. An object, with the results including the expansions and projections specified in . The returned may implement the interface to provide enumerable objects for the expansions; otherwise, the expanded information is expected to be found directly in the enumerated objects. If paging is requested by providing a non-empty list in .OrderingInfo then it is expected that the topmost would have a $skiptoken property which will be an in itself and each of it's sub-properties will be named SkipTokenPropertyXX where XX represents numbers in increasing order starting from 0. Each of SkipTokenPropertyXX properties will be used to generated the $skiptoken to support paging. If projections are required, the provider may choose to return which returns instances of . In that case property values are determined by calling the method instead of accessing properties of the returned object directly. If both expansion and projections are required, the provider may choose to return of which in turn returns from its property. Builds up an instance of for the given with the provided . The data service operation context instance. The IDataServiceActionProvider instance. The service action to invoke. The parameter tokens required to invoke the service action. An instance of to invoke the action with. Class to evaluate the expression we would pass to the execution provider. MethodInfo for CreateNewArray. Evaluates the given expression. Expression to evaluate. Final result of the evaluation. Main visit method for ALinqExpressionVisitor The expression to visit The visited expression UnaryExpression visit method The UnaryExpression expression to visit The visited UnaryExpression expression MethodCallExpression visit method The MethodCallExpression expression to visit The visited MethodCallExpression expression LambdaExpression visit method The LambdaExpression to visit The visited LambdaExpression NewArrayExpression visit method The NewArrayExpression to visit The visited NewArrayExpression Creates a new array wrapped in a ConstantExpression. Element type of the array. Elements to initialize the array with. ConstantExpression containing the newly created array. Wrapper class for IDataServiceExecutionProvider interface. Data service instance Execution provider instance Constructs the wrapper class for IDataServiceExecutionProvider The IDataService associated with this execution provider. Get the single result from the given segment info segmentInfo which contains the request query query result as returned by the IQueryable query Invokes the given request expression and return the resulting IEnumerable. Request segment Result enumeration Passes the expression along to the execution provider, which invokes it. An expression that includes calls to one or more MethodInfo or one or more calls to IDataServiceUpdateProvider2.InvokeAction(..) or IDataServiceQueryProvider2.InvokeFunction(..) The object the invoked expression returns. Gets the default DataServiceExecutionProvider. An implementation supporting setting of the association end. The declaring type of the navigation property. The name of the navigation property. The type of the navigation property. The destination end of this navigation property. The destination end of this navigation property. The on-delete action of the navigation property. The dependent properties of the referential constraint. Constructor. The declaring type of the navigation property. The resource property to create the navigation property from. The type of the navigation property. This constructor assumes that the entity set for this service operation has already be created. Matches the navigation property with its partner and fills in missing information. The navigation property that corresponds to the opposite end of this navigation properties association. A value indicating whether this navigation property is on the principle end of a referential constraint. The action to execute on the deletion of this end of a bidirectional association. Dependent properties of this navigation property. The dependent properties The this edm property was created from. Gets the destination end of this navigation property. Gets the action to execute on the deletion of this end of a bidirectional association. Gets the dependent properties of this navigation property, returning null if this is the principal end or if there is no referential constraint. Gets whether this navigation property originates at the principal end of an association. Gets a value indicating whether the navigation target is contained inside the navigation source. Gets the kind of this property. Gets the type of this property. Gets the type that this property belongs to. Gets the name of this navigation property. An implementation that supports delay-loading of properties and remembers the it was based on. Initializes a new instance of the MetadataProviderEdmEntityType class. Namespace the entity belongs to. The resource type this edm type is based on. The base type of this entity type. Denotes an entity that cannot be instantiated. An action that is used to create the properties for this type. The resource-type that this type was created from. An implementation that supports delay-loading of properties and remembers the it was based on. Initializes a new instance of the MetadataProviderEdmEntityType class. Namespace the entity belongs to. The resource type this edm type is being created from. The base type of this entity type. Denotes an entity that cannot be instantiated. Denotes if the type is open. An action that is used to create the properties for this type. The resource-type that this type was created from. An implementation backed by an IDSMP metadata provider. Default value for the IsBindable property. Default value of the IsComposable property. Default value for the IsSideEffecting property. The model this instance belongs to. The container this instance belongs to. The resource operation underlying this function import. The parameters of the service operation. Value indicating whether this function import has side-effects; cannot be true if is true. Value indicating whether this functon import can be composed inside expressions. cannot be true if is true. Value indicating whether this function import can be used as an extension method for the type of the first parameter of this function import. Gets the entity set path of the function import. Constructor. The model this instance belongs to. The container this instance belongs to. The resource operation underlying this function import. This constructor assumes that the entity set for this service operation has already be created. Method to find a parameter of the function import by name. The name of the parameter to find. An with the given name or null if no such parameter is found. Creates an edm type reference for the return type of this operation. The return type reference. Gets a value indicating whether this function import has side-effects. cannot be set to true if is set to true. Gets a value indicating whether this functon import can be composed inside expressions. cannot be set to true if is set to true. Gets whether value indicating whether this function import can be used as an extension method for the type of the first parameter of this function import. The entity set underlying the result of the function import or null if no such entity set exists. The property assumes that the entity set has already been created and cached by the model so we can look it up here. An enumerable of all parameters of the function import. The of the return type of the service operation or null if no return type exists. The name of the function import. The container element kind; EdmContainerElementKind.FunctionImport for function imports. Gets the container of this function import. The resource service operation underlying this function import. An implementation backed by an IDSMP metadata provider. The model this instance belongs to. The name of the entity container. The name of the entity container. The cache of entity sets. The cache of function imports. Constructor. The model this instance belongs to. The name of the entity container. The namespace of the schema this entity container should be made part of during serialization. Searches for an entity set with the given name in this entity container and returns null if no such set exists. The name of the element being found. The requested entity set, or null if the entity set does not exist. Cache state: EntityContainers required. We only support looking up entity sets once all entity containers have been completely populated and cached. Searches for function imports with the given name in this entity container and returns an empty enumerable if no such function import exists. The name of the function import being found. A group of the requested function imports, or an empty enumerable if no such function import exists. Cache state: EntityContainers required. We only support looking up an function imports once all entity containers have been completely populated and cached. Adds an entity set backed by the to the entity container. The name of the entity set. The resource set backing the entity set to be created. an instance of IEdmEntitySet that just got added. This method will also create the association sets and associations for the entity set. Materialization state: EntityContainers required. No change in materialization state. Add a function import to the entity container. The service operation to add to the entity container. The newly added or cached function import instance. Gets a collection of the elements of this entity container. Cache state: EntityContainers required. We only support enumerating the elements once the entity container has been completely populated which is the case when all entity containers have been cached. Gets the schema kind of this element. Gets the namespace of this element. Gets the name of this element. Helper methods for the IDSMP-to-EdmLib bridge. Maps a given data service version with the highest supported Edm version. New entry should be created for each new WCF DS version. Validation rule used when serializing metadata documents that ensures that property names don't include characters that are reserved in OData. Version number for CSDL 1.0. Version number for CSDL 1.1. Version number for CSDL 1.2. Version number for CSDL 2.0. Version number for CSDL 3.0. Xml writer settings for writing element annotations. The set of characters that are invalid in property names. Keep this array in sync with ValidationUtils.InvalidCharactersInPropertyNames in ODataLib. Compute the entity set name from the resource set. Resource set instance whose name needs to be returned. Local name of the entity set. Given the association set, generate the association name. The association set to generate the association name for. The generated association name. Get the string key to look up an association from the namespace. The resource type contributing to the association name. The navigation property contributing to the association name. The lookup key to find the association by name. Returns the version number given an . EDM schema version. Version number corresponding to the . Computes the multiplicity of a navigation property. The navigation to compute the multiplicity for. The value of the multiplicity. Converts the string representation of a multiplicity to the corresponding enumeration value. The string representation of the multiplicity to convert. The representation of the . Creates a primitive type reference for the specified . The resource type to create a primitive type reference for. An instance for the . This method will remove all processed facets from the annotations. Creates a primitive type reference for the specified . The resource type to create a primitive type reference for. The optional annotations for the resource type; the annotations can contain facets that need to be applied to the type reference. An instance for the . This method will remove all processed facets from the annotations. Get the value of the default value annotation (if present). The annotations that optionally hold the default value annotation. The string representation of the default value if present; otherwise null. This method will remove the default value annotation from the annotations if found. Get the value of the nullable annotation (if present). The annotations that optionally hold the nullability annotation. The boolean value of the nullable facet if it is present; otherwise returns null. Converts the entity property mappings on the resource type and adds them to the entity type. The model containing the annotations. The resource type with the entity property mappings to convert. The entity type to add the converted mappings to. Materialization state: none required. Materialization state will not change. Convert the custom resource annotations to serializable EDM annotations. The model containing the annotations. The list of custom annotations to convert. The target to add the converted annotations to. Converts custom annotations in to IEdmImediateValueAnnotations The model containing the annotations. The list of custom annotations to convert. The converted annotations. Updates a navigation property with information that will create associations and association sets The navigation property to update. The partner of the navigation property. A value indicating whether this navigation property is the principle end of the association. Dependent properties of the association. Action to execute on the deletion of this end of a bidirectional relationship. Multiplicity of the other end of a relationship. Checks if null value validation should be disallowed for primitive properties. The primitive property The primitive type reference to check for True if null validation should be disabled. Gets an instance of for the given , assuming it was originally created from the resource type. The edm type to get the resource type for. The resource type. Gets an instance of for the given . The type segment to get the resource type for. The resource type. Creates the string representation of an element annotation represented as . The to convert to string. The string representation of the . Converts the value for an attribute annotation to the corresponding serializable string value The value of the annotation to convert. The string representation of the . Returns the primitive type reference for the given Clr type using facet annotations if available. The Clr type to resolve. The optional annotations for the type; the annotations can contain facets that need to be applied to the type reference. The primitive type reference for the given Clr type including (optional) facets. This method will remove all processed facets from the annotations. Applies (optional) facet annotations to the primitive type reference. The type reference to apply the facets to. The optional annotations for the type; the annotations can contain facets that need to be applied to the type reference. The primitive type reference including (optional) facets. This method will remove all processed facets from the annotations. Create a binary type reference. The primitive type reference. true if the type reference should be nullable; otherwise false. The (optional) annotations with facets for the type reference. The created type reference. Create a string type reference. The primitive type reference. true if the type reference should be nullable; otherwise false. The (optional) annotations with facets for the type reference. The created type reference. Create a decimal type reference. The primitive type reference. true if the type reference should be nullable; otherwise false. The (optional) annotations with facets for the type reference. The created type reference. Create a temporal type reference. The primitive type reference. true if the type reference should be nullable; otherwise false. The (optional) annotations with facets for the type reference. The created type reference. Create a spatial type reference. The primitive type reference. true if the type reference should be nullable; otherwise false. The (optional) annotations with facets for the type reference. The created type reference. Gets the 'FixedLength' annotation if it exists. The annotations to check. The value of the annotation or a default value if the annotation is not specified. Gets the 'MaxLength' annotation if it exists. The annotations to check. true if the annotation has the special 'Max' value; otherwise false. The value of the annotation or a default value if the annotation is not specified. Gets the 'IsUnicode' annotation if it exists. The annotations to check. The value of the annotation or a default value if the annotation is not specified. Gets the 'Collation' annotation if it exists. The annotations to check. The value of the annotation or a default value if the annotation is not specified. Gets the 'Precision' annotation if it exists. The annotations to check. The value of the annotation or a default value if the annotation is not specified. Gets the 'Precision' annotation if it exists. The annotations to check. The value of the annotation or a default value if the annotation is not specified. Find an annotation with the specified key and return its value as object. The annotations to search. The name of the annotation to search for. The value of the annotation with the specified key; 'null' if no annotation is found. true if an annotation with the specified key was found and removed; otherwise false. Tries to convert an annotation value to the specified target type. The target type to convert the to. The annotation value to convert. The converted annotation value or 'null' if no conversion was possible. true if the value could be converted to the target type; otherwise false. We only support the target types needed by the facets; this is not a general purpose conversion method. Converts an annotation value to the specified target type. The target type to convert the to. The annotation value to convert. The name of the facet for which the value is converted; for error reporting only. The converted annotation value. Converts an annotation value to a string representation for the default value facet. The annotation value to convert. The converted annotation value. Use this class to represent a DataService type representing a collection property of primitive or complex types. Use this class to represent a DataService type (primitive, complex or entity). empty list of properties Primitive string resource type. ResourceTypeKind for the type that this structure represents Reference to clr type that this resource represents Reference to base resource type name of the resource. full name of the resource. Namespace for this type. Whether this type is abstract. lock object. Whether the resource type has open properties. Whether the corresponding instance type actually represents this node's CLR type. List of properties declared in this type (includes properties only defined in this type, not in the base type) List of all properties for this type (includes properties defined in the base type also) list of key properties for this type list of etag properties for this type. If ResourceProperty.CanReflectOnInstanceTypeProperty is true, we cache the PropertyInfo object. EpmInfo for this Indicates whether one of the base class of this resource type has EpmInfo. is true, if the type is set to readonly. True if the resource type includes a default stream True if the virtual load properties is already called, otherwise false. Used to mark the fact that EpmInfo for the resource type has been initialized. list of custom annotations that needs to be flowed via $metadata endpoint. Version of the resource type. Schema version of the resource type. Creates an instance of a data service . CLR type that represents the format inside the WCF Data Services?runtime. of the resource type. Base type of the resource type as string. Namespace name of the resource type as string. Name of the given resource type as string. Boolean value that indicates whether the resource type is an abstract type. Constructs a new instance of Resource type for the either given clr primitive type or collection type. This constructor must be called only for primitive or collection types. The instance type of the resource type. kind of the resource type namespace of the type. name of the type. Constructs a new instance of Astoria type using the specified clr type clr type from which metadata needs to be pulled base type of the resource type Namespace name of the given resource type. name of the given resource type. whether the resource type is an abstract type or not. Gets a resource type that represent a primitive type when given a object. The resource type. The type from which to get the primitive type. Gets a representing a collection of the specified items. A representing a collection of the specified items. The type of item in the collection. Gets a representing a collection of the specified items. A object representing a collection of the specified items. The of a single item in the collection. Adds the property supplied by the parameter to the type. The property to be added. Adds an for the resource type. Given Sets the resource type to read-only. Compares whether the given 2 resource types references are equal. First resource type instance. Second resource type instance. true if the both the parameters refer to the same instance, otherwise returns false. Add the given annotation to the list of annotations that needs to be flowed via the $metadata endpoint NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. Adds an for the resource type. Given True if the provider is a EF provider, otherwise false. By initializing the EpmInfo for the resource type, ensures that the information is available for de-serialization. Changes the key property to non key property and removes it from the key properties list Tries to find the property for the specified name. Name of property to resolve. Resolved property; possibly null. This will search ALL properties declared on the type. Tries to find the property for the specified name, excluding the specific kinds of property. Name of property to resolve. The property kind to filter out. NamedStream is a special kind of property that should be excluded when querying properties declared on a type. The exception is when the scenario specifically asks for ALL properties. Resolved property; possibly null. Tries to find the property declared on this type for the specified name. Name of property to resolve. Resolved property; possibly null. Tries to find the property declared on this type for the specified name. Name of property to resolve. The property kind to filter out. Resolved property; possibly null. Determines the minimum version that can be used for this specific type. EPM versioning is not part of MinimumPayloadVersion because it is dependent on the response mimeType Note: if you don't know the specific type only the set, you will need to find the maximum of this for all types in the hierarchy for the set type see ResourceSetWrapper.MinimumPayloadVersion The data service instance The set that the type belongs to. True if EPM should be included in the version calculation. The minimum version that can be used for a payload of this specific type. For protocol version, we just need to check for the features that the type uses, and return the minimum protocol version for the type. whether to consider epm mapping features or not. minimum protocol version that is required for this resource type. Checks if the given type is assignable to this type. In other words, if this type is a subtype of the given type or not. resource type to check. true, if the given type is assignable to this type. Otherwise returns false. Gets the property info for the resource property Resource property instance to get the property info Returns the propertyinfo object for the specified resource property. The method searchies this type as well as all its base types for the property. Get the value of the given property Resource property instance to get the property info Instance of the declaring type. the value of the property from the target. Gets an enumeration containing this type and all its base types. This type and all its base types. Returns a list of properties declared by this resource type. The list of properties declared on this type. This method gives a chance to lazy load the properties of a resource type, instead of loading them upfront. This property will be called once and only once, whenever ResourceType.Properties or ResourceType.PropertiesDeclaredOnThisType property is accessed. Compares two resource property instances, sorting them so keys are first, and are alphabetically ordered in case-insensitive ordinal order. First property to compare. Second property to compare. Less than zero if a sorts before b; zero if equal; greater than zero if a sorts after b. Does given property in the attribute exist in this type or one of it's base types Attribute which has PropertyName The declaredProperties of the type that has the attribute applied. true if property exists in current type, false otherwise Create the ReadOnly collection of Properties declared explicitly on this type A readonly collection of properties declared explicitly on this type. Marks the EpmInfo as initialized and verifies that it's valid. The declaredProperties of the current type. Initializes all properties for the resource type, to be used by Properties getter. Collection of properties exposed by this resource type. Creates a ReadOnly colleciton of all the properties visible on this type. ReadOnly colleciton of all the properties visible on this type. Gets the property info for the resource property Resource property instance to get the property info Returns the propertyinfo object for the specified resource property. The method searchies this type as well as all its base types for the property. Gets the property info for the resource property declared on this type Resource property instance to get the property info Returns the propertyinfo object for the specified resource property. Adds A resourcepropertyInfo instance to the internal propertyInfosDeclaredOnThisType dictionary. The resource property to add to the dictionary The propertyInfo handle to the instance property represented by the A resourcepropertyInfo instance that allows access to the instance property Given a resource type, builds the EntityPropertyMappingInfo for each of the dynamic entity property mapping attribute Resouce type for which EntityPropertyMappingAttribute discovery is happening The declaredProperties of the this type. Checks if the resource type is sealed. If not, it throws an InvalidOperationException. Validate the given and adds it to the list of properties for this type property which needs to be added. Calls the virtual LoadPropertiesDeclaredOnThisType method, if its not already called and then adds the properties returned by the method to the list of properties for this type. This method is called only when the Properties property is called and the type is already set to read-only. This method validates all the properties w.r.t to the base type and calls SetReadOnly on all the properties. The declaredProperties of the current type. Initialize metadata and schema version for this primitive resource type. Initialize metadata and schema version for this collection resource type. Initialize metadata and schema version for this entity collection resource type. Initialize metadata and schema version for this resource type. Computes metadata and schema version for the given property collection. List of resource properties whose metadata version needs to be calculated. List of complex types visited. Returns the schema version of the resource property collection. The metadata version of the resource property collection. Gets or sets a Boolean value that is true if the resource type includes a default stream. true if the resource type includes a default stream; otherwise, false. Reference to the CLR type that this resource represents. The instance type as a . Gets a reference to base resource type, if any. The of the base type. Gets the for the type. The for the type. Gets a list of properties declared on this type that includes only properties defined on the type, not in the base type. The of . Gets the list of properties declared on this type. The of . Gets a list of key properties for this type The of . Gets the list of properties for this type. The of . Gets the name of the resource type. The name of the resource type. Gets the full name of the resource. The full name of the resource type as string. Gets the namespace of the resource type. The namespace of the resource type. Gets a Boolean value that indicates whether this is an abstract type. true if is abstract; otherwise, false. Gets whether the resource type has open properties. true if the resource type has open properties defined; otherwise, false. Gets whether the corresponding instance type represents the CLR type of this entity. True if the instance type represents a CLR type; otherwise false. Gets or sets a placeholder to hold custom state information about a resource type that is defined by the developer. The custom state information defined by the developer. Gets a Boolean value that is true if this resource type has been set to read-only. true if this resource type has been set to read-only; otherwise, false. Do we have entity property mappings for this Property used to mark the fact that EpmInfo for the resource type has been initialized Minimum DSPV required to serialize EPMs on this type. List of all named streams on this type (includes named streams defined on the base types) List of named streams declared on this type (does not includes named streams defined on the base types) Indicates whether this type or one of its base types has a named stream. returns true if there is a named stream property declared on this type. Tree of source paths for EntityPropertyMappingAttributes on this resource type Tree of target paths for EntityPropertyMappingAttributes on this resource type Inherited EpmInfo Own EpmInfo All EpmInfo i.e. both own and inherited. Returns the list of custom annotations defined on this set. Returns the version of the resource type based on the metadata. This does not take EPM into account. Schema version of the resource type. Holder of Epm related data structure per resource type EpmSourceTree per EpmTargetTree per Inherited EpmInfo Own EpmInfo Creates a new instance of EpmInfoPerResourceType instance. True if the provider is efprovider, otherwise false. Removes all data created internally by ResourceType. This is needed when building epm info fails since the trees may be left in undefined state (i.e. half constructed) and if inherited EPM attributes exist duplicates will be added. Returns true if the underlying provider is EF, otherwise false. We need to throw better exception message in case of EFProvider since the attributes in the EF provider named differently than the attribute property names. Hence we need to find out when the provider is EF vs others to throw this nice error message. Property for obtaining EpmSourceTree for a type Property for obtaining EpmTargetTree for a type Inherited EpmInfo Own EpmInfo Private class to cache ResourceProperty info Constructs a new instance of ResourceProperty info. PropertyInfo instance. PropertyInfo for the given property. Compiled expression to get the property value. Resource type of a single item in the collection property. Constructor. Resource type of a single item in the collection property. Returns instance type for a collection property of specified . Resource type of a single item in the collection property. Instance type of the collection property of . Returns EDM name of the type for a collection property of specified . Resource type of a single item in the collection property. EDM name of the type of the collection property of . Resource type of a single item in the collection. Wrapper for IDataServicePagingProvider interface discovery. Service instance. IDataServicePagingProvider interface for the service. Was interface already requested. Constructor. Service instance. Dispose the pagingProvider provider instance Gives reference to IDataServicePagingProvider interface implemented by the service. Is custom paging enabled for the service for query processing. Do we need to handle custom paging during serialization. A helper class to extract the ObjectContext and save method from a DbContext A cache of CLR types to their ObjectContextAccessor. Stores null if no ObjectContextAccessor can exist for a given type. A lock for contextAccessorCache Determines if a type is a DbContext The type to check True is the type is a DbContext Returns the ObjectContext for a particular instance. Either: 1. The object is an ObjectContext, or 2. The object is a DbContext and the ObjectContext can be retrieved The data source instance The ObjectContext instance or null Returns the ObjectContext and SaveChanges method for a particular instance. Either: 1. The object is an ObjectContext, or 2. The object is a DbContext and the ObjectContext can be retrieved The data source instance The ObjectContext instance or null The SaveChanges method or null Determines if the exception is of the type DbEntityValidationException The exception instance to check. True if the exception is derived from DbEntityValidationException, and False otherwise. Wraps the exception given in a new exception, and gets a verbose message from the DbEntityValidationException derived instance. The DbEntityValidationException instance to be used to create the more verbose exception. A new exception with a verbose message, and an innerException of the passed in exception. Gets the DbContext accessor for a type, or returns null if one cannot be made The type to analyze The DbContextAccessor for the type, or null Creates a DbContextAccessor for a given type if it exists The type to create the accessor for A DbContextAccessor, or null if one cannot be created for the Type (i.e. it does not inherit from DbContext) Determines through reflection based on names if the type passed in a derived from the type name passed in. The type to have its derivation checked. The name of the type to check for derivation from True if the type is of the type the TypeName refers to, False otherwise. A tuple of the ObjectContext getter and SaveChanges method A func to return the ObjectContext for an instance of a context A func to call SaveChanges for an instance of a context Class to wrap the DbEntityValidationException type so we don't have to staticly link to the EntityFramework.dll The name of the type that this class is wrapping The instance that is being wrapped Creates an instance of this wrapper from the base Exception instance. the DbEntityValidationException instance to be wrapped Determines if the exception is of the type DbEntityValidationException The exception instance to check. True if the exception is derived from DbEntityValidationException, and False otherwise. Walks through the collections on DbEntityValidationException, and DbEntityValidationResult to get the messages from the DbValidationError objects, and appends them together. The appended list of DbValidationError messages Wrapper class to forward calls to the underlying IDataServiceStreamProvider instance and validates responses from it. Default buffer size used for stream copy. Data service instance Stream provider instance Constructs the wrapper class for IDataServiceStreamProvider Data service instance Validates that an implementation of IDataServiceStreamProvider exists and loads it. An instance of the IDataServiceStreamProvider interface. Validates that an implementation of IDataServiceStreamProvider2 exists and loads it. An instance of the IDataServiceStreamProvider2 interface. This method is invoked by the data services framework to retrieve the default stream associated with the Entity Type specified by the parameter. Note that we set the response ETag in the host object before we return. The stream returned should be the default stream associated with this entity. Stream property instance. If it is null, the corresponding method defined on IDataServiceStreamProvider will be invoked. Otherwise the corresponding method defined on IDataServiceStreamProvider2 will be called with the name of the stream. A reference to the context for the current operation. A valid stream the data service use to query / read a streamed BLOB which is associated with the . This method is invoked by the data services framework whenever an insert or update operation is being processed for the stream associated with the Entity Type specified via the entity parameter. The stream returned should be the default stream associated with this entity. Stream info instance. If it is null, the corresponding method defined on IDataServiceStreamProvider will be invoked. Otherwise the corresponding method defined on IDataServiceStreamProvider2 will be called with the name of the stream. A reference to the context for the current operation. A valid stream the data service use to write the contents of a BLOB which is associated with . This method is invoked by the data services framework whenever an delete operation is being processed for the stream associated with the Entity Type specified via the entity parameter. The stream deleted should be the default stream associated with this entity. A reference to the context for the current operation. This method is invoked by the data services framework to obtain the IANA content type (aka media type) of the stream associated with the specified entity. This metadata is needed when constructing the payload for the Media Link Entry associated with the stream (aka Media Resource) or setting the Content-Type HTTP response header. The entity associated with the stream for which the content type is to be obtained Stream property instance. If it is null, the corresponding method defined on IDataServiceStreamProvider will be invoked. Otherwise the corresponding method defined on IDataServiceStreamProvider2 will be called with the name of the stream. A reference to the context for the current operation. Valid Content-Type string for the stream associated with the entity This method is invoked by the data services framework to obtain the URI clients should use when making retrieve (ie. GET) requests to the stream(ie. Media Resource). This metadata is needed when constructing the payload for the Media Link Entry associated with the stream (aka Media Resource). If IDataServiceStreamProvider.GetReadStreamUri returns a valid Uri, we return that as the Uri to the Media Resource. Otherwise we take the given Media Link Entry uri, and construct the default Media Resource Uri. The entity associated with the stream for which a “read stream” is to be obtained Stream property instance. If it is null, the corresponding method defined on IDataServiceStreamProvider will be invoked. Otherwise the corresponding method defined on IDataServiceStreamProvider2 will be called with the name of the stream. A reference to the context for the current operation. The URI clients should use when making retrieve (ie. GET) requests to the stream(ie. Media Resource). This method is invoked by the data services framework to obtain the ETag of the stream associated with the entity specified. This metadata is needed when constructing the payload for the Media Link Entry associated with the stream (aka Media Resource) as well as to be used as the value of the ETag HTTP response header. The entity associated with the stream for which an etag is to be obtained Stream property instance. If it is null, the corresponding method defined on IDataServiceStreamProvider will be invoked. Otherwise the corresponding method defined on IDataServiceStreamProvider2 will be called with the name of the stream. A reference to the context for the current operation. ETag of the stream associated with the entity specified This method is invoked by the data services framework when a request is received to insert into an Entity Set with an associated Entity Type hierarchy that has > 1 Entity Type and >= 1 Entity Type which is tagged as an MLE (ie. includes a stream). Fully qualified name entity set name. Data service instance. Namespace qualified type name which represents the type the Astoria framework should instantiate to create the MLE associated with the BLOB/MR being inserted. Gets the ETag, ReadStreamUri and ContentType of the stream MLE instance Stream property instance. If it is null, the corresponding method defined on IDataServiceStreamProvider will be invoked. Otherwise the corresponding method defined on IDataServiceStreamProvider2 will be called with the name of the stream. context of the current operation returns the etag for the stream returns the read stream uri returns the content type of the stream Dispose the stream provider instance Get the ETag header value from the request headers. A reference to the context for the current operation. The etag value sent by the client (as the value of an If[-None-]Match header) as part of the HTTP request sent to the data service This parameter will be null if no If[-None-]Match header was present True if an value of the etag parameter was sent to the server as the value of an If-Match HTTP request header False if an value of the etag parameter was sent to the server as the value of an If-None-Match HTTP request header null if the HTTP request for the stream was not a conditional request Invokes an API call and verifies the response Content-Type and ETag headers are not being modified by the API call. Return type from the API call API name Delegate to be called A reference to the context for the current operation. Returns the result from the api call Asks the data service for a stream provider instance. Throw if none is implemented. If GetService returns two different object instances for IDataServiceStreamProvider and IDataServiceStreamProvider2, LoadStreamProvider always use the instance from GetService(IDataServiceStreamProvider2) for this.streamProvider. Gets buffer size the data service will use when reading from read stream or writing to the write stream. If the size is less than or equals to 0, the default of 64k will be used. This class represents an expanded navigation property in the tree of projected properties. It is also used to represent the root of the projection tree. Class describing a single node on the tree of projections and expansions. This is the base class used for any projected property. The name of the property to project. If this node represents the root of the projection tree, this name is an empty string. The for the property to be projected. If this node represents an open property or it's the root of the projection tree, this field is null. Target resource type on which the projection needs to happen. Creates new instance of which represents a simple projected property. The name of the property to project. The for the property to project. If an open property is to be projected, specify null. The resource type for which the needs to be projected. The name of the property to project. If this node represents the root of the projection tree, this name is an empty string. The for the property to be projected. If this node represents an open property or it's the root of the projection tree, this property is null. The resource type for which needs to be projected. The resource set to which the expansion leads. If this node represents expanded navigation property, this is the resource set to which the expanded navigation property points to. If this node is the root node of the projection tree, this is the resource set for the root of the query results. Collection of information which describes the ordering for the results returned by this expanded property. This can be null in which case no ordering is to be applied. The filter expression to be applied to results returned by this expanded property. This can be null in which case no filter is to be applied. Number of results to skip for this node. null value means that no skip should be applied. Maximum number of results to return for this node. null value means that all results should be returned. Maximum number of results allowed for this node. Provider should use this only as a hint. It should return no less then maxResultsExpected + 1 results (assuming that number is available) so that the service can detect violation of the limit. null value means that no limit will be applied and thus all results available should be returned. List of child nodes. Internal field which is set to true once we have seen a projection including this expanded property. Otherwise set to false. This field is used to eliminate expanded nodes which are not projected and thus there would be no point in expanding them. Flag which specifies if all child properties of this node should be projected. Flag which specifies if all bindable operations of this node should be projected. Flag which specified is the entire expanded subtree of this node should be projected. Whether this node has one or more children which refers to derived properties. Cache for the set of operations that have been selected. Creates new instance of node representing expanded navigation property. The name of the property to project and expand. The for this property. Can only be null for the root node. Target resource type on which the expansion needs to happen. The resource set to which the expansion leads. The ordering info for this node. null means no ordering to be applied. The filter for this node. null means no filter to be applied. Number of results to skip. null means no results to be skipped. Maximum number of results to return. null means return all available results. Maximum number of expected results. Hint that the provider should return at least maxResultsExpected + 1 results (if available). Adds a new expanded node with the given segment name, if required. Expand segment as specified in the uri. An instance of ExpandedProjectionNode - either new or existing one. Add the projection node with the given property name, property instance and target resource type, if required. Name of the property that needs to be projected. ResourceProperty instance containing information about the property - this will be null for open properties. ResourceType instance on which the property needs to be expanded. A new or an existing instance of ProjectionNode. Find a child node of a given property. ResourceProperty instance to find the child for. ResourceType instance on which the expansion needs to happen. The child node if there's one for the specified or null if no such child was found. Walks the subtree of this node and removes all nodes which were not marked projected. Used to remove unnecessary expanded nodes. Removes duplicates from the tree caused by wildcards and sorts the projected properties. underlying provider instance. Examples $select=Orders, Orders/ID - get rid of the Orders/ID $select=Orders, Orders/* - get rid of the Orders/* $select=Orders/*, Orders/ID - get rid of the Orders/ID $select=Orders/*, Orders/OrderItems&$expand=Orders - get rid of the Orders/OrderItems (it's redundant to *) $select=Orders/*, Orders/OrderItems&$expand=Orders/OrderItems - leave as is, the Orders/OrderItems are expanded The sorting order is the same as the order in which the properties are enumerated on the owning type. This is to preserve the same order as if no projections occured. Marks the entire subtree as projected. This is used when there were no projections specified in the query to mark the entire tree as projected. Whether the given property can be applied to the existing node. Existing node with the same property name. ResourceProperty instance for the property refered by the new segment. TargetResourceType for the new segment. true if the given property can be applied to the existing node, otherwise returns false. In case this function returns true, it might modify the TargetResourceType property of the existing node. Verify that the property referred by the existing node and the new segment are both open properties or declared properties and if the existing node is an expand node, make sure that the target resource types are the same. Existing node with the same property name. ResourceProperty instance for the property refered by the new segment. TargetResourceType for the new segment. true if the existingNode is an expand node. Sort the list of existing projection nodes in the metadata order, first based on the type followed by the property order. existing projection nodes. list of resource types in metadata order. the projection nodes in sorted manner. Find a child node of a given property. The name of the property to find the child for. The child node if there's one for the specified or null if no such child was found. Adds a new child node to this node. The child node to add. Collection of information which describes the ordering for the results returned by this expanded property. This can be null in which case no ordering is to be applied. The filter expression to be applied to results returned by this expanded property. This can be null in which case no filter is to be applied. Number of results to skip for this node. null value means that no skip should be applied. Maximum number of results to return for this node. null value means that all results should be returned. Maximum number of results allowed for this node. Provider should use this only as a hint. It should return no less then MaxResultsExpected + 1 results (assuming that number is available) so that the service can detect violation of the limit. null value means that no limit will be applied and thus all results available should be returned. List of child nodes. Set to true if all operations of this node should be made part of the results. Set to true if all properties of this node should be made part of the results. The resource set to which the expansion leads. If this node represents expanded navigation property, this is the resource set to which the expanded navigation property points to. If this node is the root node of the projection tree, this is the resource set for the root of the query results. This property is for internal use by components of the WCF Data Services to avoid unnecessary lookups of the wrapper from the ResourceSet property. The resource type in which all the entities expanded by this segment will be of. This is usually the resource type of the for this node, but it can also be a derived type of that resource type. This can happen if navigation property points to a resource set but uses a derived type. It can also happen if service operation returns entities from a given resource set but it returns derived types. Internal property which is set to true once we have seen a projection including this expanded property. Otherwise set to false. This property is used to eliminate expanded nodes which are not projected and thus there would be no point in expanding them. Flag which specifies if all child properties of this node should be projected. Flag which specifies if all bindable operations of this node should be projected. Whether this expanded node has a filter or a constraint on max results returns. Whether this node has one or more children which refers to derived properties. The cache for tracking which operations have been selected. When exposed by a provider, this interface is used to provide custom paging for the clients. Returns the next-page token to put in the $skiptoken query option. The next-page token as a collection of primitive types. Enumerator for which the continuation token is being requested. Gets the next-page token from the $skiptoken query option in the request URI. Query for which the continuation token is being provided. Resource type of the result on which the $skip token is to be applied. Continuation token parsed into primitive type values. The IDataServiceStreamProvider2 interface defines the contract between the data services framework server component and a data source's named stream implementation (ie. a stream provider). The IDataServiceStreamProvider interface defines the contract between the data services framework server component and a data source's stream implementation (ie. a stream provider). Returns a stream that contains the media resource data for the specified entity, which is a media link entry. The data that contains the binary property data of the . The entity that is a media link entry with a related media resource. The eTag value sent as part of the HTTP request that is sent to the data service. A nullable value that determines what kind of conditional request was issued to the data service, which is true when the eTag was sent in an If-Match header, false when the eTag was sent in an If-None-Match header, and null when the request was not conditional and no eTag was included in the request. The instance used by the data service to process the request. This method is invoked by the data services framework to retrieve the default stream associated with the entity instance specified by the parameter. Notes to Interface Implementers The argument is passed as it is likely that an implementer of this interface method will need information from the HTTP request headers in order to construct a stream. Likely header values required are: 'Accept' 'Accept-Charset' 'Accept-Encoding' An implementer of this method MUST perform concurrency checks as needed in their implementation of this method. If an If-Match or If-None-Match request header was included in the request, then the etag parameter will be non null, which indicates this method MUST perform the appropriate concurrency check. If the concurrency check passes, this method should return the requested stream. If the concurrency checks fails, the method should throw a DataServiceException with the appropriate HTTP response code as defined in HTTP RFC 2616 section 14.24 and section 14.26. If the etag was sent as the value of an If-Match request header, the value of the ‘checkETagForEquality’ header will be set to true If the etag was sent as the value of an If-None-Match request header, the value of the ‘checkETagForEquality’ header will be set to false It is the responsibility of the implementer of this method to honor the values of the appropriate request headers when generating the returned response stream. An implementer of this method MUST NOT set the following HTTP response headers on the parameter as they are set by the data service runtime: Content-Type ETag An implementer of this method may set HTTP response headers (other than those forbidden above) on the parameter. An implementer of this method should only set the properties on the parameter which it requires to be set for a successful response. Altering other properties on the parameter may corrupt the response from the data service. Stream Ownership The data service framework will dispose the stream once all bytes have been successfully read. If an error occurs while reading the stream, then the data services framework will generate an in-stream error which is sent back to the client. See the error contract specification for a description of the format of in-stream errors Returns the stream that the data service uses to write the binary data for the media resource received from the client that belongs to the specified entity. A valid the data service uses to write the contents of a binary data received from the client. The entity that is a media link entry with a related media resource. The eTag value that is sent as part of the HTTP request that is sent to the data service. A nullable value that determines what kind of conditional request was issued to the data service, which is true when the eTag was sent in an If-Match header, false when the eTag was sent in an If-None-Match header, and null when the request was not conditional and no eTag was included in the request. The instance that is used by the data service to process the request. This method is invoked by the data services framework whenever an insert or update operation is being processed for the stream associated with the entity instance specified via the entity parameter. Notes to Interface Implementers The argument is passed as it is likely that an implementer of this interface method will need information from the HTTP request headers in order to construct a write stream. Likely header values required are: 'Content-Type' 'Content-Disposition' 'Slug' (as specified in the AtomPub RFC 5023) An implementer of this method MUST perform concurrency checks as needed in their implementation of this method. If an If-Match or If-None-Match request header was included in the request, then the etag parameter will be non null, which indicates this method MUST perform the appropriate concurrency check. If the concurrency check passes, this method should return the requested stream. If the concurrency checks fails, the method should throw a DataServiceException with the appropriate HTTP response code as defined in HTTP RFC 2616 section 14.24 and section 14.26. If the etag was sent as the value of an If-Match request header, the value of the ‘checkETagForEquality’ header will be set to true If the etag was sent as the value of an If-None-Match request header, the value of the ‘checkETagForEquality’ header will be set to false An implementer of this method MUST NOT set the following HTTP response headers on the parameter as they are set by the data service runtime: Content-Type ETag An implementer of this method may set HTTP response headers (other than those forbidden above) on the parameter. An implementer of this method should only set the properties on the parameter which it requires to be set for a successful response. Altering other properties on the parameter may corrupt the response from the data service. Stream Ownership The data service framework will dispose the stream once all bytes have been successfully written to the stream. If an error occurs while writing to the stream, then the data services framework will generate an error response to the client as per the "error contract" semantics followed by V1 data services Deletes the associated media resource when a media link entry is deleted. The media link entry that is deleted. The instance that processes the request. When or are null. When is not an entity that has a binary property to stream. When the stream associated with the cannot be deleted. This method is invoked by the data services framework whenever an delete operation is being processed for the streams associated with the entity instance specified via the entity parameter. Notes to Interface Implementers If this method is being invoked as part of a request to delete the MLE and its associated stream (ie. MR): This method will be invoked AFTER IUpdatable.DeleteResource(entity) is called. An implementer of this method must be able to delete a stream even if the associated entity (passed as a parameter to this method) has already been removed from the underlying data source. The argument is passed as a means for this method to read the HTTP request headers provided with the delete request. An implementer of this method MUST NOT set the following HTTP response headers on the parameter as they are set by the data service runtime: Content-Type ETag An implementer of this method may set HTTP response headers (other than those forbidden above) on the parameter. An implementer of this method should only set the properties on the parameter which it requires to be set for a successful response. Altering other properties on the parameter may corrupt the response from the data service. Returns the content-type of the media resource that belongs to the specified entity. A valid MIME Content-Type value for the binary data. The entity that is a media link entry with a related media resource. The instance used by the data service to process the request. This method is invoked by the data services framework to obtain the IANA content type (aka media type) of the stream associated with the specified entity. This metadata is needed when constructing the payload for the Media Link Entry associated with the stream (aka Media Resource) or setting the Content-Type HTTP response header. The string should be returned in a format which is directly usable as the value of an HTTP Content-Type response header. For example, if the stream represented a PNG image the return value would be "image/png" This method MUST always return a valid content type string. If null or string.empty is returned the data service framework will consider that an error case and return a 500 (Internal Server Error) to the client. NOTE: Altering properties on the parameter may corrupt the response from the data service. Returns the URI that is used to request the media resource that belongs to the specified entity. A value that is used to request the binary data stream. The entity that is a media link entry with a related media resource. The instance used by the data service to process the request. This method is invoked by the data services framework to obtain the URI clients should use when making retrieve (ie. GET) requests to the stream(ie. Media Resource). This metadata is needed when constructing the payload for the Media Link Entry associated with the stream (aka Media Resource). This method was added such that a Media Link Entry’s representation could state that a stream (Media Resource) is to be edited using one URI and read using another. This is supported such that a data service could leverage a Content Distribution Network for its stream content. The URI returned maps to the value of the src attribute on the atom:content element of a payload representing the Media Link Entry associated with the stream described by this DataServiceStreamDescriptor instance. If the JSON format is used (as noted in section 3.2.3) this URI represents the value of the src_media name/value pair. The returned URI MUST be an absolute URI and represents the location where a consumer (reader) of the stream should send requests to in order to obtain the contents of the stream. If URI returned is null, then the data service runtime will automatically generate the URI representing the location where the stream can be read from. The URI generated by the runtime will equal the canonical URI for the associated Media Link Entry followed by a “/$value” path segment. NOTE: Altering properties on the parameter may corrupt the response from the data service. Returns the eTag of the media resource that belongs to the specified media link entry. eTag of the media resource associated with the . The entity that is a media link entry with a related media resource. The instance used by the data service to process the request. This method is invoked by the data services framework to obtain the ETag of the stream associated with the entity specified. This metadata is needed when constructing the payload for the Media Link Entry associated with the stream (aka Media Resource) as well as to be used as the value of the ETag HTTP response header. This method enables a stream (Media Resource) to have an ETag which is different from that of its associated Media Link Entry. The returned string MUST be formatted such that it is directly usable as the value of an HTTP ETag response header. If null is returned the data service framework will assume that no ETag is associated with the stream NOTE: Altering properties on the parameter may corrupt the response from the data service. Returns a namespace-qualified type name that represents the type that the data service runtime must create for the media link entry that is associated with the data stream for the media resource that is being inserted. A namespace-qualified type name. Fully-qualified entity set name. The instance that is used by the data service to process the request. This method is invoked by the data services framework when a request is received to insert into an Entity Set with an associated Entity Type hierarchy that has > 1 Entity Type and >= 1 Entity Type which is tagged as an MLE (ie. includes a stream). An implementer of this method should inspect the request headers provided by the parameter and return the namespace qualified type name which represents the type the Astoria framework should instantiate to create the MLE associated with the BLOB/MR being inserted. The string representing the MLE type name returned from this method will subsequently be passed to IUpdatable.CreateResource to create the MLE (of the specified type). NOTE: Altering properties on the parameter may corrupt the response from the data service. Gets the size of the stream buffer. Integer that represents the size of buffer. If the size is 0, the default of 64k will be used. Returns a stream that contains the binary data for the named stream. A valid stream the data service use to query / read a named stream which is associated with the . Null may be returned from this method if the requested named stream has not been created since the creation of . The data service will respond with 204 if this method returns null. The entity to which the named stream belongs. A object that represents the named stream. The eTag value sent as part of the HTTP request that is sent to the data service. A nullable value that determines what kind of conditional request was issued to the data service, which is true when the eTag was sent in an If-Match header, false when the eTag was sent in an If-None-Match header, and null when the request was not conditional and no eTag was included in the request. The instance used by the data service to process the request. This method is invoked by the data services framework to retrieve the named stream associated with the entity instance specified by the parameter. Notes to Interface Implementers The argument is passed as it is likely that an implementer of this interface method will need information from the HTTP request headers in order to construct a stream. Likely header values required are: 'Accept' 'Accept-Charset' 'Accept-Encoding' An implementer of this method MUST perform concurrency checks as needed in their implementation of this method. If an If-Match or If-None-Match request header was included in the request, then the etag parameter will be non null, which indicates this method MUST perform the appropriate concurrency check. If the concurrency check passes, this method should return the requested stream. If the concurrency checks fails, the method should throw a DataServiceException with the appropriate HTTP response code as defined in HTTP RFC 2616 section 14.24 and section 14.26. If the etag was sent as the value of an If-Match request header, the value of the ‘checkETagForEquality’ header will be set to true If the etag was sent as the value of an If-None-Match request header, the value of the ‘checkETagForEquality’ header will be set to false It is the responsibility of the implementer of this method to honor the values of the appropriate request headers when generating the returned response stream. An implementer of this method MUST NOT set the following HTTP response headers on the parameter as they are set by the data service runtime: Content-Type ETag An implementer of this method may set HTTP response headers (other than those forbidden above) on the parameter. An implementer of this method should only set the properties on the parameter which it requires to be set for a successful response. Altering other properties on the parameter may corrupt the response from the data service. Null may be returned from this method if the requested named stream has not been created since the creation of . The data service will respond with 204 if this method returns null. If the stream returned from this method contains 0 byte, this method may set the response status code on the parameter to 204. The GetStreamContentType method should return null or string.Empty if the current request will respond with 204. Stream Ownership The data service framework will dispose the stream once all bytes have been successfully read. If an error occurs while reading the stream, then the data services framework will generate an in-stream error which is sent back to the client. See the error contract specification for a description of the format of in-stream errors. Returns the stream that the data service uses to write the binary data received from the client as the specified named stream. A valid the data service uses to write the contents of a binary data received from the client. The entity to which the named stream belongs. A object that represents the named stream. The eTag value sent as part of the HTTP request that is sent to the data service. A nullable value that determines what kind of conditional request was issued to the data service, which is true when the eTag was sent in an If-Match header, false when the eTag was sent in an If-None-Match header, and null when the request was not conditional and no eTag was included in the request. The instance used by the data service to process the request. This method is invoked by the data services framework whenever an insert or update operation is being processed for the named stream associated with the entity instance specified via the entity parameter. Notes to Interface Implementers The argument is passed as it is likely that an implementer of this interface method will need information from the HTTP request headers in order to construct a write stream. Likely header values required are: 'Content-Type' 'Content-Disposition' 'Slug' (as specified in the AtomPub RFC 5023) An implementer of this method MUST perform concurrency checks as needed in their implementation of this method. If an If-Match or If-None-Match request header was included in the request, then the etag parameter will be non null, which indicates this method MUST perform the appropriate concurrency check. If the concurrency check passes, this method should return the requested stream. If the concurrency checks fails, the method should throw a DataServiceException with the appropriate HTTP response code as defined in HTTP RFC 2616 section 14.24 and section 14.26. If the etag was sent as the value of an If-Match request header, the value of the ‘checkETagForEquality’ header will be set to true If the etag was sent as the value of an If-None-Match request header, the value of the ‘checkETagForEquality’ header will be set to false An implementer of this method MUST NOT set the following HTTP response headers the parameter as they are set by the data service runtime: Content-Type ETag An implementer of this method may set HTTP response headers (other than those forbidden above) on the parameter. An implementer of this method should only set the properties on the parameter which it requires to be set for a successful response. Altering other properties on the parameter may corrupt the response from the data service. Stream Ownership The data service framework will dispose the stream once all bytes have been successfully written to the stream. If an error occurs while writing to the stream, then the data services framework will generate an error response to the client as per the "error contract" semantics followed by V1 data services. Returns the content-type of the specified named stream. A valid MIME Content-Type value for the binary data. The entity to which the named stream belongs. A object that represents the named stream. The instance used by the data service to process the request. This method is invoked by the data services framework to obtain the IANA content type (aka media type) of the named stream associated with the specified entity. This metadata is needed when constructing the payload for the entity associated with the named stream or setting the Content-Type HTTP response header. The string should be returned in a format which is directly usable as the value of an HTTP Content-Type response header. For example, if the stream represented a PNG image the return value would be "image/png" If the requested named stream has not yet been uploaded or the GetReadStream method will set the response status code to 204, this method should return null or string.Empty. Otherwise this method MUST always return a valid content type string for the requested named stream. NOTE: Altering properties on the parameter may corrupt the response from the data service. Returns the URI that is used to request a specific named stream. A value that is used to request the named binary data stream. The entity with the named stream being requested. A object that represents the named stream. The instance used by the data service to process the request. This method is invoked by the data services framework to obtain the URI clients should use when making retrieve (ie. GET) requests to the named stream. This metadata is needed when constructing the payload for the entity associated with the named stream. This method was added such that an entity’s representation could state that a named stream is to be edited using one URI and read using another. This is supported such that a data service could leverage a Content Distribution Network for its stream content. The URI returned maps to the value of the self link for the named media resource. If the JSON format is used (as noted in section 3.2.3) this URI represents the value of the src_media name/value pair. The returned URI MUST be an absolute URI and represents the location where a consumer (reader) of the stream should send requests to in order to obtain the contents of the stream. If URI returned is null, then the data service runtime omit the self link for the named media resource. NOTE: Altering properties on the parameter may corrupt the response from the data service. Returns the eTag of the specified named stream. eTag value of the specified named stream. The entity to which the named stream belongs. A object that represents the named stream. The instance used by the data service to process the request. This method is invoked by the data services framework to obtain the ETag of the name stream associated with the entity specified. This metadata is needed when constructing the payload for the entity associated with the named stream as well as to be used as the value of the ETag HTTP response header. This method enables a named stream to have an ETag which is different from that of its associated entity. The returned string MUST be formatted such that it is directly usable as the value of an HTTP ETag response header. If null is returned the data service framework will assume that no ETag is associated with the stream NOTE: Altering properties on the parameter may corrupt the response from the data service. This interface declares the methods required to support the $expand and $select query options for a WCF Data Service. This interface is a superset of interface and adds support for paging in the expanded results and projections. Applies expansions and projections to the specified . object to expand and apply projections to. The root node of the tree which describes the projections and expansions to be applied to the . Determine if the current Response format needs epm values. An object, with the results including the expansions and projections specified in . The returned may implement the interface to provide enumerable objects for the expansions; otherwise, the expanded information is expected to be found directly in the enumerated objects. If paging is requested by providing a non-empty list in .OrderingInfo then it is expected that the topmost would have a $skiptoken property which will be an in itself and each of it's sub-properties will be named SkipTokenPropertyXX where XX represents numbers in increasing order starting from 0. Each of SkipTokenPropertyXX properties will be used to generated the $skiptoken to support paging. If projections are required, the provider may choose to return which returns instances of . In that case property values are determined by calling the method instead of accessing properties of the returned object directly. If both expansion and projections are required, the provider may choose to return of which in turn returns from its property. Implemented by a class that encapsulates a data service provider's metadata representation of a type. Returns the members declared on this type only, not including any inherited members. Name of the type without its namespace Implemented by a class that encapsulates a data service provider's metadata representation of a member on a type. BuiltInTypeKind for the member's type. DEVNOTE (sparra): This currently has a dependency on the Entity Framework's enum, but this dependency should be removed in subsequent refactorings of this class that expand the usage beyond the ObjectContextServiceProvider. Name of the member without its namespace. True if this member is a key on it's declaring type, otherwise false. EDM name for the member's type. MimeType for the member. Returns the entity type of the items in the collection if this member is a collection type, otherwise null. DEVNOTE (sparra): This currently has a dependency on the Entity Framework's EntityType class, but this dependency should be removed in subsequent refactorings of this class that expand the usage beyond the ObjectContextServiceProvider. Return the list of the metadata properties for the member. Return the list of facets for the member. Implemented by a class that encapsulates a data service provider's entry point to its metadata system. Gets the data service provider type with the specified name. Provider type name used to find the type. Provider type for Gets the CLR type for the specified StructuralType. DEVNOTE (sparra): This currently has a dependency on the Entity Framework's StructuralType, but this dependency should be removed in subsequent refactorings of this class that expand the usage beyond the ObjectContextServiceProvider. StructuralType used to find the CLR type. CLR type equivalent for Stores information about a association and its ends FullName of the association. Name of the association Namespace of the association type. end1 for this association. end2 for this association. list of custom annotations that needs to be flowed via $metadata endpoint. Creates a new instance of AssociationInfo to store information about an association. name of the association. namespaceName of the association. first end of the association. second end of the association. Add the given annotation to the list of annotations that needs to flowed via the $metadata endpoint NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. Return the end with the given name. Name of the end. An instance of the end with the given name. Retrieve the end for the given resource set, type and property. resource type for the end resource property for the end Association type end for the given parameters Retrieve the related end for the given resource set, type and property. resource type for the source end resource property for the source end Related association type end for the given parameters Returns the related end with the given name. Name of the end. Returns the related end of the end with the given name. Returns the instance of ResourceReferentialConstraint. FullName of the association. Name of the association. Namespace of the association type. end1 for this association. end2 for this association. Returns the list of custom annotations defined on this set. Use this class to perform late-bound operations on data service resource sets. MethodInfo for object DataServiceProviderMethods.GetValue(this object value, string propertyName). MethodInfo for IEnumerable<T> DataServiceProviderMethods.GetSequenceValue(this object value, string propertyName). MethodInfo for Convert. MethodInfo for TypeIs. MethodInfo for OfType with IQueryable parameter. MethodInfo for OfType with IEnumerable parameter. MethodInfo for TypeIs. Static constructor for data service provider methods. Gets a named value from the specified object. An object that is the requested value. Object that contains the value. that is the property the value of which must be returned. Gets a named value from the specified object as a sequence. An instance that contains the requested value as a sequence. Object that contains the value. that is the property the value of which must be returned. Type of the resulting sequence. Filters the supplied query based on the specified . Returns an instance filtered by the supplied . The instance to be filtered. used to filter the query. Type of the instance supplied as the parameter. Type representing the resource type supplied as the parameter. Filters the supplied query based on the specified . Returns an instance filtered by the supplied . The instance to be filtered. used to filter the query. Type of the instance supplied as the parameter. Type representing the resource type supplied as the parameter. Casts a value to a specified type. The cast to the requested . The value to cast to the requested type. Resource type for which to check. Determines if the value is of a specified type. True if the value is of the specified type; otherwise false. The value to check. to compare with. Checks whether the given type is assignable from the resource type of a supplied object instance. Returns a null value when the is not of the specified ; otherwise returns the supplied . The object instance to check. The against which to check for assignability. Type of the . Returns comparison information for string parameters in an operation expression. Value Condition -1 is less than . 0 x equals y. 1 is greater than . The first parameter value. The second parameter value. Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Returns comparison information for Boolean parameters in an operation expression. Value Condition -1 is less than . 0 x equals y. 1 is greater than . The first parameter value. The second parameter value. Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Returns comparison information for nullable Boolean parameters in an operation expression. Value Condition -1 is less than . 0 x equals y. 1 is greater than . The first parameter value. The second parameter value. Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Returns comparison information for GUID parameters in an operation expression. Value Condition -1 is less than . 0 x equals y. 1 is greater than . The first parameter value. The second parameter value. Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Returns comparison information for nullable GUID parameters in an operation expression. Value Condition -1 is less than . 0 x equals y. 1 is greater than . The first parameter value. The second parameter value. Do not change the name of this function because LINQ to SQL is sensitive about the method name, so is EF probably. Compares two byte arrays for equality. Returns a that is true when the arrays are equal; otherwise false. First byte array. Second byte array. Compares two byte arrays for equality. Returns a that is true when the arrays are not equal; otherwise false. First byte array. Second byte array. Class to abstract IDataServiceMetadataProvider and IDataServiceQueryProvider, hence making sure all the metadata and query provider calls are made via this class. Each request must create a new instance of this class because a request is the defined scope of metadata consistency. Maps operations to OperationWrappers. Maps the operation context to the corresponding MetadataProviderEdmModel which wraps the IDataServiceMetadataProvider no annotations are included. Metadata to be used by the service provider wrapper. The metadata provider instance. The query provider instance. The data service instance. boolean flag indicating whether we've enumerated all the resources sets exposed by the metadata provider and the cache is fully initialized. EDM version to which metadata is compatible. For example, a service operation of type Void is not acceptable 1.0 CSDL, so it should use 1.1 CSDL instead. Similarly, OpenTypes are supported in 1.2 and not before. Data Service Response Version for the $metadata. Stores the string value "ContainerName." Stores the string value "Namespace.ContainerName." Stores the value of the IDataServiceMetadataProvider.ContainerName value Stores the value of the IDataServiceMetadataProvider.ContainerNamespace value The provider behavior. Updated per operation. The ETag provider. Updated per operation. Creates a new instance of DataServiceProviderWrapper instance. Instance of DataServiceCacheItem containing cached configuration and metadata. Instance of the metadata provider. Instance of the query provider. The data service instance. Whether the provider was created internally. Gets all visible containers. WARNING!!! This property can only be called for the $metadata path because it enumerates through all resource sets. Calling it from outside of the $metadata path would break our IDSP contract. All visible containers. Returns the Expression that represents the container. resource set representing the entity set. An Expression that represents the container; null if there is no container for the specified name. Gets the for the specified . Instance to extract a from. The that describes this in this provider. Get the value of the strongly typed property. instance of the type declaring the property. resource property describing the property. Resource type to which the property belongs. value for the property. Get the value of the open property. instance of the type declaring the open property. name of the open property. value for the open property. Get the name and values of all the properties defined in the given instance of an open type. instance of a open type. collection of name and values of all the open properties. Invoke the given service operation and returns the results. service operation to invoke. value of parameters to pass to the service operation. returns the result of the service operation. If the service operation returns void, then this should return null. Returns all visible types in this data source WARNING!!! This property can only be called for the $metadata path because it enumerates through all resource types. Calling it from outside of the $metadata path would break our IDSP contract. All visible types in this data source. Returns all the visible operations in this data service. WARNING!!! This property can only be called for the $metadata path because it enumerates through all service operations. Calling it from outside of the $metadata path would break our IDSP contract. All visible operations in this data service. Given the specified name, tries to find a resource set. Name of the resource set to resolve. Resolved resource set, possibly null. Gets the ResourceAssociationSet instance when given the source association end. Resource set of the source association end. Resource type of the source association end. Resource property of the source association end. ResourceAssociationSet instance. Given the specified name, tries to find a type. Name of the type to resolve. Resolved resource type, possibly null. The method must return a collection of all the types derived from . The collection returned should NOT include the type passed in as a parameter. An implementer of the interface should return null if the type does not have any derived types (ie. null == no derived types). Resource to get derived resource types from. A collection of resource types () derived from the specified or null if there no types derived from the specified exist. Returns true if represents an Entity Type which has derived Entity Types, else false. instance of the resource type in question. True if represents an Entity Type which has derived Entity Types, else false. Given the specified name, tries to find a service operation. Name of the service operation to resolve. Resolved service operation, possibly null. Disposes of the metadata and query providers. Gets the MetadataProviderEdmModel over this provider's metadata. The MetadataProviderEdmModel over this provider's metadata. Gets the Data Service Response Version for $metadata as well as the EDM schema version. The metadata Edm schema version. The response DSV for $metadata. Iterates through the resource sets, service operations and resource types to pre-populate the metadata cache item. Gets the target container for the given navigation property, source container and the source resource type source entity set. source resource type. navigation property. target container that the navigation property refers to. Return the list of ETag properties for a given type in the context of a given container Name of the container to use for context (for MEST-enabled providers) Type to get the ETag properties for A collection of the properties that form the ETag for the given type in the given container Gets the visible resource properties for from . We cache the list of visible resource properties so we don't have to calculate it repeatedly when serializing feeds. Resource set in question. Resource type in question. List of visible resource properties from the given resource set and resource type. Checks whether the current data provider behaves like a reflection or EF provider and whether it implements IUpdatable. Returns true if the current data source behaves like a reflection or EF provider and implements IUpdatable. Otherwise, returns false. Retrieve an implementation of a data service interface (ie. IUpdatable, IExpandProvider,etc) The type representing the requested interface An object implementing the requested interface, or null if not available Validates if the container should be visible and is not read only. If the container rights are set to None the container should not be visible. Resource set to be validated. Validated container, null if the container is not supposed to be visible. Validates if the service operation should be visible and is read only. If the service operation rights are set to None the service operation should not be visible. Operation to be validated. Validated service operation, null if the service operation is not supposed to be visible. Return the list of custom annotation for the entity container with the given name. Name of the EntityContainer. Return the list of custom annotation for the entity container with the given name. Get the name portion of a container qualified name, i.e. returns Name from Namespace.ContainerName.Name or ContainerName.Name A name qualified by the container name. Returns true if is prefixed with "ContainerName." or "Namespace.ContainerName."; otherwise return false. Returns the name portion of if it is prefixed with "ContainerName." or "Namespace.ContainerName."; otherwise returns the given . Throws if resource type is not sealed. resource type to inspect. This is a common method for checking uniqe names across entity sets, resource types and service operations. Name to be added to set. Set containing already verified names. String for exception to be thrown if the name is not unique. Assert that we didn't expect the cache to already be preloaded. The data service provider wrapper whose value of cache preloaded to check. Verify that the current request uri is metadata or service document uri. The data service instance. true if the request uri can be service uri also. Returns the given resource type and all reachable complex types from the resource type resource type to inspect Hash set to make sure we only return unvisited types. Returns the given resource type and all reachable complex types from the resource type Get all reachable resource types from a resource set resource set to inspect Hash set to make sure we only return unvisited types. List of reachable resource types from the given resource set Get all complex types reachable by the given service operation. Operation to inspect Hash set to make sure we only return unvisited types. List of reachable complex types from the given service operation. Validates a collection resource type. Checks that it doesn't use derived complex types as its items. The to check. Validates that is cached and read only. Resource type to be validated. Validated resource type, null if the resource type is not supposed to be visible. Provider behavior, this changes dynamically for each operation for non-internally created providers. The data source from which data is provided. Gets a value indicating whether null propagation is required in expression trees. Namespace name for the container. Name of the container Cached configuration with access rights info. Cached static configuration with intercepter information. The metadata provider instance. The query provider instance. Returns true if the data provider has ReflectionProviderQueryBehavior or EntityFrameworkProviderQueryBehavior. Otherwise returns false. Returns true if the provider was internally created, false otherwise. Returns the for this provider The for this provider Note that this will only return non-null on V1 providers in which case it returns our V1 provider's implementation of this interface. In all other cases this returns null as we don't allow custom implementation of this interface yet. Maps operations to OperationWrappers. The data service instance. For batch operations, this is the internal data service instance and not the top level batch one. Returns the operation context for the current request. For operation within batch, this returns the context of the current operation, and not the one for the top level batch request. Returns all types in this data source WARNING!!! This property can only be called for the $metadata path because it enumerates through all resource types. Calling it from outside of the $metadata path would break our IDSP contract. Keep track of the calculated visibility of resource types. Maps resource set names to ResourceSetWrappers. Maps names to ResourceAssociationSets. This class contains code for EDM utility functions !!! THIS CODE IS USED BY System.Data.Services.Providers *AND* System.Data.EntityModel.Emitters CLASSES !!! Finds the extended property from a collection of extended EFx properties MetadataItem that contains the properties to search Name of the extended property The corresponding MetadataProperty object if found, null otherwise Holds information needed during content serialization/deserialization for each EntityPropertyMappingAttribute Private field backing Attribute property. Private field backing DefiningType property Type whose property is to be read. This property is of ClientType type on the client and of ResourceType type on the server. Private field backing IsEFProvider property Path to the property value. Stored as an array of property names to access on each other. If this mapping is for a non-collection property or for the collection property itself, this path starts at the entity resource. If this mapping is for a collection item property, this path starts at the collection item. In this case empty path is allowed, meaning the item itself. Set to true if this info describes mapping to a syndication item, or false if it describes a custom mapping Creates instance of EntityPropertyMappingInfo class. The corresponding to this object Type the was defined on. Type whose property is to be read. This can be different from defining type when inheritance is involved. Whether the current data source is an EF provider. Needed for error reporting. Compares the defining type of this info and other EpmInfo object. The other EpmInfo object to compare to. true if the defining types are the same The corresponding to this object Type that has the Type whose property is to be read. This property is of ClientType type on the client and of ResourceType type on the server. Path to the property value. Stored as an array of property names to access on each other. If this mapping is for a non-collection property or for the collection property itself, this path starts at the entity resource. If this mapping is for a collection item property, this path starts at the collection item. In this case empty path is allowed, meaning the item itself. Set to true if this info describes mapping to a syndication item, or false if it describes a custom mapping Is the current data source an EF provider Describes a single ordering expression along with sort order Ordering expression Order is ascending or descending Constructor Expression for ordering Order by ascending or descending Ordering expression Ascending or descending Describes ordering information for each entity set for $expand request for a WCF Data Service. Is the expanded entity set paged Collection of ordering expressions Constructor Whether top level entity set is paged Adds a single OrderingExpression to the collection Ordering expression to add Adds multiple OrderingExpressions to the collection Ordering expressions to add Is the expaded entity set paged Gives the collection of ordering expressions for a request Class to describe an end point of a resource association set. Resource set for the association end. Resource type for the association end. Resource property for the association end. list of custom annotations that needs to be flowed via $metadata endpoint. Creates a new instance of the class. The resource set to which the end belongs. The resource type to which the end belongs. The resource property that returns the end. Add the given annotation to the list of annotations that needs to flowed via the $metadata endpoint NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. Gets the resource set for the . The resource set. Gets the resource type for the . The resource type. Gets the resource property that returns the . The resource property. Gets the custom state for the . The custom state. Returns the list of custom annotations defined on this association set end. Set the role name for the resource association set end. Class to describe an association between two resource sets. Name of the association set. End1 of the association set. End2 of the association set. list of custom annotations that needs to be flowed via $metadata endpoint. Initializes a new instance of the class. Name of the association set. that is at the source end of the association set. that is at the target end of the association set. Add the given annotation to the list of annotations that needs to flowed via the $metadata endpoint NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. Retrieve the end for the given resource set, type and property. resource set for the end resource type for the end resource property for the end Resource association set end for the given parameters Retrieve the related end for the given resource set, type and property. resource set for the source end resource type for the source end resource property for the source end Related resource association set end for the given parameters Add the association type associated with this set. Association type. Gets the name of the association set. The name of the association set. Gets the source end of the association set. that is at the source end of the association set. Gets the target end of the association set. that is at the target end of the association set. Gets or sets the custom state information about the resource association. The custom state information about the resource association. Resource association type for the set. Returns the list of custom annotations defined on this set. Stores information about an end of an association. Name of the relationship end Type of the relationship end. Property of the relationship end. Property on the related end that points to this end. The multiplicity of this end is determined from the fromProperty. Operation action for this end. Since this is a internal field, its better to use the EdmLib enum for this rather than redefining the enum. list of custom annotations that needs to be flowed via $metadata endpoint. Creates a new instance of EndInfo. name of the end. resource type that the end refers to. property of the end. Multiplicity of the association. Delete behavior. Creates a new instance of EndInfo. name of the end. resource type that the end refers to. property of the end. Property on the related end that points to this end. The multiplicity of this end is determined from the fromProperty. Add the given annotation to the list of annotations that needs to flowed via the $metadata endpoint NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. Type of the relationship end. Name of the relationship end Property of the relationship end. Mulitplicity of the relationship end Action to be performed on the other end when the entity on this end is deleted. Returns the list of custom annotations defined on this set. Structure to keep information about a resource set Custom providers can choose to use it as is or derive from it in order to flow provider-specific data. Reference to resource type that this resource set is a collection of Type of the query root for the set. Name of the resource set. Name of the entity container to which the set belongs to. Is true, if the resource set is fully initialized and validated. No more changes can be made once its set to readonly. Is true, if key properties should be ordered as per declared order when used for constructing OrderBy queries. Otherwise the default alphabetical order is used. list of custom annotations that needs to be flowed via $metadata endpoint. Creates a new instance of class. The name of the set of items as string. The of the items in the set. Gets or sets the read-only status of the collection. Add the given annotation to the list of annotations that needs to flowed via the $metadata endpoint NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. Checks if the resource set is sealed. If not, it throws an InvalidOperationException. Gets the name of the collection. The name of the resource set. Gets the type of the collection. The type of the collection. Gets or sets custom state information that is defined by the developer. The state information defined by the developer. Gets whether the set is read-only. true if the set is read-only; Otherwise, false. Get or sets whether to use the order of key properties as defined in the metadata of an Entity Framework or reflection provider when constructing an implicit OrderBy query. true when the order of key properties is inferred from the provider metadata; Otherwise, false. Type of the query root for the set. Returns the list of custom annotations defined on this set. Name of the entity container to which the set belongs to. Wrapper class for a resource set. A resource set object can be shared across services, this wrapper class contains the resouce set information and also service specific information about that resource set. The string used as a key to a dictionary in CustomState of the resource set. If this key exists and its value is a boolean true value, then the QFE way of enabling the metadata key order was used and it overrides any setting of the public property on the resource set. Reference to the wrapped resource set Caches for all the visible properties for the given resource type. Reference to the wrapped resource type. Access rights to this resource set. Page Size for this resource set. Methods to be called when composing read queries to allow authorization. Methods to be called when validating write methods to allow authorization. Whether the types contained in the set have EPM. Minimum DSPV required to serialize EPMs in this resource set Whether the types contained in the set have any navigation property. Whether the set has open types. Whether the set type has derived types. Metadata version of the resourceSet. This does not take EPM into account. Constructs a new ResourceSetWrapper instance using the ResourceSet instance to be enclosed. ResourceSet instance to be wrapped by the current instance Creates the wrapper from the given resource set for use in unit tests. resource set instance whose wrapper needs to get created. Optional rights for the set. Defaults to None. Wrapper for the given resource set. Creates the wrapper from the given resource set. This method returns null, if the given resource set is not visible. It also checks for the resource set metadata to make sure that the MPV in the configuration is set correctly resource set instance whose wrapper needs to get created. DataServiceProviderWrapper instance. resource type validator. Wrapper for the given resource set, if the resource set/resource type metadata is valid and adheres to the protocol version in the server. Determines whether the element type of the resource set has any derived types. Data service provider instance. true if the resource set type has any derived types. Whether the types contained in the set have any navigation property or not Data service provider instance. True if there's any type in this set which has named streams. False otherwise. Determines the minimum payload version that can be used for the set. The data service instance True if EPM should be included in the version calculation. The minimum version that can be used for a payload for or from this set. Whether the types contained in the set have entity property mappings or not Data service provider instance. True if there's any type in this set which has entity property mappings. False otherwise. Minimum DSPV required to serialize EPMs in this resource set Data service provider instance. Minimum DSPV required to serialize EPMs in this resource set Returns list of key properties ordered as appropriate for construction of OrderBy queries (for implicit sorting of results). List of key properties ordered either alphabetically or in the declared order depending on the UseMetadataKeyOrder. Gets the visible resource properties for for this set. We cache the list of visible resource properties so we don't have to calculate it repeatedly when serializing feeds. Data service provider instance. Resource type in question. List of visible resource properties for the resource type. Gets the visible resource properties declared on the for this set. We cache the list of visible resource properties so we don't have to calculate it repeatedly when serializing feeds. Data service provider instance. Resource type in question. List of visible resource properties declared on the resource type. Whether the types contained in the set have named streams or not Data service provider instance. Apply the given configuration to the resource set. data service configuration instance. Data service static configuration. Checks if the cache is populated, otherwise populates it. Data service provider instance. Resource type in question. An instance of ResourcePropertyCache, with all information about the properties cached. Name of the resource set. Reference to resource type that this resource set is a collection of Whether the resource set is visible to service consumers. Access rights to this resource set. Page Size for this resource set. Retursn the list of query interceptors for this set (possibly null). Returns the list of change interceptors for this set (possible null). Returns the wrapped resource set instance. Type of the query root for the set. Is true, if key properties should be ordered as per declared order when used for constructing OrderBy queries. Otherwise the default alphabetical order is used. Name of the entity container to which the set belongs to. Returns the list of custom annotations defined on this set. Class to cache all the visible properties of a resource type. List of all visible properties for a resource type. List of all visible properties declared on a resource type. Internal class which implements the root of the projection tree. This class is used to carry information required by our V1 providers to able able to fall back to the V1 behavior of using the interface. The collection of expand paths. Used by V1 providers to pass the V1 way of representing description of expands in the query to the . The base resource type for all entities in this query. This is usually the base resource type of the resource set as well, but it can happen that it's a derived type of the resource set base type. Creates new root node for the projection tree. The resource set of the root level of the query. The ordering info for this node. null means no ordering to be applied. The filter for this node. null means no filter to be applied. Number of results to skip. null means no results to be skipped. Maximum number of results to return. null means return all available results. Maximum number of expected results. Hint that the provider should return at least maxResultsExpected + 1 results (if available). The list of expanded paths. The resource type for all entities in this query. The resource type in which all the entities expanded by this segment will be of. This is usually the resource type of the for this node, but it can also be a derived type of that resource type. This can happen if navigation property points to a resource set but uses a derived type. It can also happen if service operation returns entities from a given resource set but it returns derived types. The collection of expand paths. Used by V1 providers to pass the V1 way of representing description of expands in the query to the . Flag which is set when the ExpandPaths property should be used to determine the expanded properties to serialize instead of using the ProjectedNode tree. This flag is set if the old IExpandProvider was used to process expansions and thus it could have modified the ExpandPaths, in which case the serialization needs to use that to comply with the provider. Note that this can never be set to true if projections where used in the query, so in that case there's no possiblity for the ExpandPaths to differ from the ProjectedNode tree. If projections are in place, we only apply the expansion removal caused by "*" projection expressions to the tree and leave the ExpandPaths unaffected, as they should not be used in that case. Flag used to mark that projections were used in the query. Returns true if there are any expansions in this tree. Returns true if there are any expanded navigation property on derived types in this tree. There are bunch of reasons we need to know if there are any derived property expansions specified in the tree. 1> For the V1 IExpandProvider interface, we do not want to support expansion on derived navigation properties. 2> When building the expression tree, we will apply the orderby, skip and take before the select, unlike we did in V1. 3> For EF provider, we need to make sure that we use the in-build expand provider, instead of doing .Include Use this class to represent an operation. Wrapped instance of the operation. Used to cache the target segment for this operation by resource type. Access rights to this service operation. Access rights to this service action. Entity set from which entities are read, if applicable. Initializes a new instance. OperationBase instance to be wrapped. Apply the given configuration to the resource set. data service configuration instance. data service provider wrapper instance for accessibility validation. Gets the result set for the operation. Provider instance to resolve the path expression. Binding resource set. Returns the result resource set for the operation. Gets the target segment of the service action based on the resource type. If the action name collides with a property of the , then this method resolves the name collision by prefixing the action name with the . The resource type against which to get the target of the service action. The name of the container, containing this operation. Used to resolve service action name collision with the resource property if any. The name of the operation wrapper or the name prefixed with the in case of name collision with the property. This method maintains a cache of action targets by resource type for efficiency. Protocol (for example HTTP) method the service operation responds to. MIME type specified on primitive results, possibly null. Name of the service operation. Returns all the parameters for the given service operations. Kind of result expected from this operation. Element of result type. Note that if the method returns an IEnumerable<string>, this property will be typeof(string). Return type of the operation. Gets the wrapped service operation Gets the wrapped service action Whether the operation is visible to service consumers. Access rights to this service operation. Access rights to this service action. Entity set from which entities are read (possibly null). Path expression to calculate the result resource set of the function if the function returns an entity or a collection of entity. The binding parameter to this function/action; null if this function/action is top-level or this operation is not a function or action. The value of the underlying operation. The kind of the current service operation Gets the Clr return type. Use this attribute on a DataService method to indicate than this method should be invoked to intercept queries. Entity set name that the method filters. Initializes a new instance of the class for the entity set specified by the parameter. The name of the entity set that contains the entity to which the interceptor applies. Gets the name of the entity set that contains the entity to which the interceptor applies. A string that indicates the name of the entity set that contains the entity to which the interceptor applies. Use this class to describe the data request a client has submitted to the service. The name of the container for results. Root of the projection and expansion tree. If this is null - no projections or expansions were part of the request. The MIME type for the requested resource, if specified. URI for the result (without the query component). SegmentInfo containing information about every segment in the uri Maximum version that can be understood by the client, this is the value of MaxDataServiceVersion header in request. The maximum protocol version the service supports. The effective max protocol version of the response (the lesser of the service and request max versions). Storage for the response payload kind once it has been determined. Storage for whether or not the response body or etag should be written once it has been determined. Storage for whether or not the response body should be written once it has been determined. Initializes a new RequestDescription for a query specified by the request Uri. The kind of target for the request. The source for this target. URI to the results requested (with no query component). Initializes a new RequestDescription for a query specified by the request Uri. list containing information about each segment of the request uri URI to the results requested (with no query component). Initializes a new RequestDescription based on an existing one. Other description to base new description on. Query results for new request description. Projection segment describing the projections on the top level of the query. Create a new request description from the given request description and new entity as the result. Existing request description. entity that needs to be the result of the new request. a new instance of request description containing information about the given entity. Create a new request description from the given request description and new entity as the result. Existing request description. entity that needs to be the result of the new request. The new target resource type for the new request description. a new instance of request description containing information about the given entity. Updates the current payload kind from the given query results if needed. This is to account for open-property values being either 'value' or 'binaryvalue' depending on the instance type. The query results. The provider. Processes and applies the client preference for return content. Service instance. Processes and applies the count option if present in the last segment. Service instance. Parses the select query option. The data service. Processes the accept header and determines the format of the response. Service instance. Updates the request and response versions based on response format and the target resource set data service instance Updates the request and response versions based on response format and the target resource set resourceSet to check for friendly feeds presence data service instance Check and updates the response version for POST MR operation. Resource type for the MLE. Data service instance. Raise the minimum client version requirement for this request The required version for this request. The data service instance Returns the last segment info whose target request kind is resource The index of the parent resource Handle the $callback query option. Data Service. Raise the response version for this request Response version for this request. The data service instance Raise the response version for this request Response version for this request. The data service instance Raise the version for features used in the user's request The feature version required for this request. The data service instance Update the response version to be at least equal to the MinDSV received in the request. The data service instance Determines the whether response body should be written based on the request verb and the uri. NOTE: Does not consider the client's preference when determining this. The request verb. Determines the whether response body should be written based on the request verb, the uri, and the client's preference. The request verb. Infers a container name for the request description from its segments. The segments of the request. The container name for the request. Infers the expected mime type for the response from the properties and operations in the request's segments. The segments of the request. The mime type. Initialize the version headers. Service instance. Copies settings from another request-description instance. The description to copy from. Determines the kind of the response payload based on the current request. The kind of the response payload. The name of the container for results. Root of the projection and expansion tree. URI for the result (without the query component). Returns the list containing the information about each segment that make up the request uri The MIME type for the requested resource, if specified. Returns the request's counting options Number of expressions in the $skiptoken for top level expression Collection of properties in the $skiptoken for top level expression Returns the value of the row count Version of the request, this is the value of DataServiceVersion header in request. The server response version The actual server response version. Because of V1/V2 bug, there are few places that we set the response version to V1 even though the actual response version is V2 because of backward compat bug. Client preference for payload in response. If the server needs to write a response body or etag in the response based on the request verb and uri. NOTE: The client's preference is not considered when determining this. If the server needs to write a response body in the response based on the request verb, uri, and client preference. Gets the format of the response. Gets the payload metadata parameter interpreter for the request. Gets the select query option value. The base query for the request, before client-specified composition. Whether the result of this request is a single element. The kind of target being requested. The type of resource targetted by this request. The resource set of the resource targetted by this request. The type of source for the request target. Returns the resource property on which this query is targeted Returns the last segment Returns true if the request description refers to a link uri. Otherwise returns false. Is the request for an IEnumerable<T> returning service operation. Returns true if the request is targetting a non-entity property Checks whether etag headers are allowed (both request and response) for this request. ETag request headers are mainly If-Match and If-None-Match headers ETag response header is written only when its valid to specify one of the above mentioned request headers. description about the request uri. true if If-Match or If-None-Match are allowed request headers for this request, otherwise false. Determine if the request target is a named stream. request description. True if the request target is a named stream. Get the target stream info for the current default or named stream request. request description Stream info instance for the request Returns true if the given request description represents a service action request; false otherwise. Request description in question. true if the given request description represents a service action request; false otherwise. Get the payload kind of the response based on the request description Request description. ODataPayloadKind for the response. Gets a value indicating whether the response to this request will be Atom. Function name specified in $callback for JSONP. This should be passed to ODataLib for normal requests only. Errors and top-level $batch requests do not work with JSONP anyway, so we do not pass this to ODataLib in those cases. Use this class to process a web data service request URI. MethodInfo for IExpandProvider.ApplyExpansions(). Original description over which query composition takes place. Service with data and configuration. Whether the $orderby, $skip, $take and $count options can be applied to the request. Whether the top level request is a candidate for paging. The skip-token expression builder to use. Has custom paging already been applied? List of paths to be expanded. Root projection segment of the tree specifying projections and expansions for the query. Collection of ordering expressions for the current query Value of $skip argument Value of $top argument Query expression being composed. Initializes a new instance. Service with data and configuration. Description for request processed so far. Processes query arguments and returns a request description for the resulting query. Service with data and configuration information. Description for request processed so far. A new . Apply projection for the given property to the parent projection node. The parent node which the new node will be added to. Name of the property that needs to be projected. ResourceProperty instance containing information about the property - this will be null for open properties. ResourceType instance on which the property needs to be expanded. A new or an existing instance of the ExpandedProjectionNode for the given property. Applies the selection for the given operation segment to the given projection node. The operation segment to apply to the projection node. The current projection node. The target type based on type segments. Applies the given path-based selection item to the given projection node. The path being selected. The current projection node. A new or an existing instance of the ExpandedProjectionNode for path of the selection item. Gets the target resource type based on type segments in the given path. The path to traverse. The type to start on. The final target resource type of the path based on type segments. Gets the root projection node or creates one if no one exists yet. The root node of the projection tree. Checks and resolved all textual expand paths and removes unnecessary paths. Performs a depth-first walk down the expand tree, copying and adding to the current path as it goes. When the bottom of a path is reached, the path is added to the overall set of paths. The expand clause to extract paths from. The current path so far for this depth-first traversal of the tree. Starts out null. The current node of the expand tree. The root node of the expand tree. Creates an instance of based on the metadata in the given . The metadata-bound expand segment to create the from. The current resource type. The created . Checks that set query options are applicable to this request. Processes the $expand argument of the request. Builds the tree of to represent the $select query option. This method assumes that $expand was already processed. And we have the tree of objects for the $expand query option already built. Applies projections from the given select/expand clause to the tree represented by the given node. The clause to apply. The expand tree to apply projections to. Processes the $expand and $select query options. Processes the $select argument of the request. Generate the queryResults for the request Processes the $filter argument of the request. Processes the $skiptoken argument of the request. Applies standard paging to the query. Skip token obtained from query parameters. Applies custom paging to the query. Skip token obtained from query parameters. Processes the $orderby argument of the request. Processes the $inlinecount argument of the request. Builds the collection of ordering expressions including implicit ordering if paging is required at top level Processes query arguments and returns a request description for the resulting query. A modified that includes query information. In case $expand is not provided while the results are still paged, we need to create a wrapper for the object in order to project the skip tokens corresponding to the result sequence Obtains the wrapper type for the $skiptoken along with description of properties in the wrapper Description for the skip token properties Type of $skiptoken wrapper Given the wrapper type and description, returns bindings for the wrapper type for skip token Wrapper type Description Top level parameter type Array of bindings for skip token Updates the topLevelOrderingInfo member with the new collection of expressions that dereference the ExpandedElement property on the top level wrapper object Type of top level wrapper object Processes the $skip and/or $top argument of the request by composing query with Skip and/or Take methods. Finds out the appropriate value for skip and top parameters for the current request Checks whether the specified argument should be processed and what its value is. Name of the query item, $top or $skip. The value for the query item. true if the argument should be processed; false otherwise. Checks if custom paging is already applied, if not, applies it and raises response version. Values of skip tokens. Is the top level container for the query paged i.e. we need to use StandardPaging. Does the top level container for the query have page size limits defined. Do we need to use CustomPaging for this service. Provides values to describe the kind of thing targetted by a client request. Nothing specific is being requested. A top-level directory of service capabilities. Entity Resource is requested - it can be a collection or a single value. A single complex value is requested (eg: an Address). A single value is requested (eg: a Picture property). A single value is requested (eg: the raw stream of a Picture). System metadata. A data-service-defined operation that doesn't return anything. The request is a batch request. The request is a link operation - bind or unbind or simple get An open property is requested. An open property value is requested. A stream property value is requested. A single collection of primitive or complex values is requested. Provides values to describe the source of the request results. No source for data. This value is seen when a source hasn't been determined yet, or when the source is intrinsic to the system - eg a metadata request. An entity set provides the data. A service operation provides the data. A property of an entity or a complex object provides the data. Use this class to process a web data service request Uri. Recursion limit on segment length. Parses the request Uri that the host is exposing and returns information about the intended results. Request uri that needs to get processed. Data service for which the request is being processed. true if this is a uri in the request payload body, false if this is the request uri for the current request. If this parameter value is true, it means that we are trying to get to an entity whose uri is specified in the request body, and hence we should not be doing any version checks while processing this uri. An initialized RequestDescription instance describing what the request is for. A with status code 404 (Not Found) is returned if an identifier in a segment cannot be resolved; 400 (Bad Request) is returned if a syntax error is found when processing a restriction (parenthesized text) or in the query portion. Very important: no rights are checked on the last segment of the request. Appends a segment with the specified escaped . URI to append to. Segment text, already escaped. A new URI with a new segment escaped. Appends a segment with the specified unescaped . URI to append to. Segment text, not yet escaped. A new URI with a new segment escaped. Gets the absolute URI that a reference (typically from a POST or PUT body) points to. Textual, URI-encoded reference. Context for current operation. The absolute URI that resolves to. Gets the absolute URI that a reference (typically from a POST or PUT body) points to. Textual, URI-encoded reference. Absolure URI for service, used to validate that the URI points within. The value of the 'DataServiceVersion' header in the request body as Version The absolute URI that resolves to. This method does not verify that the uri is relative to the service. Gets the absolute URI that a reference (typically from a POST or PUT body) points to. Textual, URI-encoded reference. Absolure URI for service, used to validate that the URI points within. The value of the 'DataServiceVersion' header in the request body as Version The absolute URI that resolves to. This method does not verify that the uri is relative to the service. Gets the URI to the results, without the query component. OperationContext with request information. The URI to the results, without the query component. Returns an object that can enumerate the segments in the specified path (eg: /abc/pqr -> abc, pqr). A valid path portion of an uri. baseUri for the request that is getting processed. An enumerable object of unescaped segments. Parses the path part of the request URI using the ODL uri parser. The absolute request URI. The data service. The parsed path. Apply the key predicates extracted from the segment's query portion The segment on which the query is extracted Gets the query root for the segment. Segment to compose the query. The data service instance. true if is the last segment; false otherwise. true if we need to check rights for this segment; false otherwise. Invokes the service operation for the segment. The segment The service instance true if we need to check rights for the operation; false otherwise. the last segment of the request. Invokes the service action for the segment. Segment info for the service action. Previous segment. Data service instance. Whether a query should be requested and composed with interceptors for a segment. Service under which request is being analyzed. Whether this is the last segment of the URI. Is the current segment being checked after a $links segment. The segment has query portion. true if the segments should be read and composed with interceptors; false otherwise. For V1 providers we always get the query root or else we introduce a breaking change. If this is an insert operation and the current segment is the first and last segment, we don't need to get the query root as we won't even invoke the query. Note that we need to make sure we only skip the query root if the query portion is null, this is because in the deep insert case, we can be doing a binding to a single entity and we would need the query root for that entity. We shall also skip requesting the query if the request is for an update on $links for non-V1 providers. Composes query expressions for the given array. Segments to process. Service for which segments are being processed. Whether the uri contains cross-references like $1, etc. Compose the query expression for a type name segment. The type name segment. The previous segment. Composes the query expression for properties Segment to compose the expression for. The previous segment. The data service instance. true if is also the last segment; false otherwise. true if we need to check rights for this segment; false otherwise. If is an EntityCollection or Collection type, return its ItemType; otherwise return . Resource type in question. Returns true if is a collection type or an EntityCollection type. If is an EntityCollection or Collection type, return its ItemType; otherwise return . Reads the parameters for the specified from the . RequestMessage with request information. Operation with parameters to be read. A new object[] with parameter values. Parses an operation parameter from the request query string. Type of the parameter. The query string value. The parsed operation parameter value. Validates the binding parameter and reads the payload parameters for the given action. Data service instance. The segment for the action whose parameters is being read. The segment before the action. A new Expression[] with parameter values. Project a property with a single element out of the specified query. Base query to project from. Property to project. A query with a composed primitive property projection. Project a property with multiple elements out of the specified query. Base query to project from. Property to project. A query with a composed primitive property projection. Project a property with a single element out of the specified query over an late bound (possibily open) property. Base query to project from. Name of property to project. A query with a composed property projection. Filters the given query based on the given resource type. source query expression. resource type based on which the query needs to be filtered. an instance of IQueryable with the filtered expression. Project a property with a single element out of the specified query over an late bound (possibily open) property. Base query to project from. Resource property containing the metadata for the late bound property. A query with a composed property projection. Project a property with a single element out of the specified query over an late bound (possibily open) property. Base query to project from. Resource property containing the metadata for the late bound property. A query with a composed property projection. Selects a single resource by key values. Base query for resources resource type whose keys are specified Key values for the given resource type. A new query that selects the single resource that matches the specified key values. Calls the Execution provider to invoke the request expressions for the current request Request description. Service instance. Checks that $format is not on a $batch request Service to check. Describes an action performed on a resource. This enumeration has been patterned after the DataRowAction (http://msdn2.microsoft.com/en-us/library/system.data.datarowaction.aspx) enumeration (with a few less values). The resource has not changed. The resource has been added to a container. The resource has changed. The resource has been deleted from a container. Provides values to describe the kind of thing targetted by a client request. Specifies no rights on this resource. Specifies the right to read one resource per request. Specifies the right to read multiple resources per request. Specifies the right to append new resources to the container. Specifies the right to update existing resource in the container. Specifies the right to delete existing resource in the container. Specifies the right to update existing resource in the container. Specifies the right to read single or multiple resources in a single request. Specifies the right to append, delete or update resources in the container. Specifies all rights to the container. Use this class to encapsulate writing the body of the outgoing response for a data request. Encoding, if available. RequestMessage for the request being processed. Enumerator for results. Description of request made to the system. ODataMessageWriter using which the response needs to be written. IODataResponseMessage containing all the response headers. For an inner batch message, note that this is the actual ODataLib message, and it's headers will be overridden when after SerializeResponseBody finishes. So, if using this to set headers, BE VERY CAREFUL. The content format. If the target is a Media Resource, this holds the read stream for the Media Resource. Object to create a message writer. Initializes a new that can write the body of a response. Service for the request being processed. Enumerator for results. Description of request made to the system. IODataResponseMessage instance for the response. Writes the request body to the specified . Stream to write to. Gets the EDM model from the service. The EDM model or null. Gets the absolute URI to the service. Gets the for this response. Content format for response. Contains the information regarding a segment that makes up the uri Empty constructor. Copy constructor. Another to get a shallow copy of. Checks the EntitySetRights and ServiceOperationRights of a segment. Returns the identifier for this segment i.e. string part without the keys. Returns the values that constitute the key as specified in the request. Returns the query that's being composed for this segment Whether the segment targets a single result or not. resource set if applicable. The type of element targeted by this segment. The kind of resource targeted by this segment. Returns the source for this segment Service operation being invoked. Returns the property that is being projected in this segment, if there's any. Returns the expression for this segment. Returns true if the current segment is a type identifier segment. Returns true if this segment has a key filter with values; false otherwise. Determines whether the target kind is a direct reference to an element i.e. either you have a $value or you are accessing a resource via key property (/Customers(1) or /Customers(1)/BestFriend/Orders('Foo'). Either case the value cannot be null. A characteristic of a direct reference is that if its value is null, a 404 error should be returned. Gets a value indicating whether this segemnt represents a service action. true if this segment represents a service action; false otherwise. Gets the binding type of the segment to use for action/function resolution. Implements deserializer for entities. Base class for all deserializers using the ODataMessageReader. Provides a abstract base deserializer class Maximum recursion limit on deserializer. Data service for which the deserializer will act. Tracker for actions taken during deserialization. Indicates whether the payload is for update or not Depth of recursion. number of resources (entity or complex type) referred in this request. Request description for the top level target entity. Initializes a new instance of . true if we're reading an update operation; false if not. Data service for which the deserializer will act. Tracker to use for modifications. The request description to use. Initializes a new based on a different one. Parent deserializer for the new instance. Releases resources held onto by this object. Creates a new for the specified stream. description about the request uri. Data service for which the deserializer will act. indicates whether this is a update operation or not Tracker to use for modifications. A new instance of . Returns the last segment info whose target request kind is resource description about the target request data service type to which the request was made whether cross-referencing is allowed for the resource in question. entity resource which is getting modified. entity container of the entity which is getting modified. whether to check the etag for the entity resource that is getting modified. Returns the object that needs to get modified Returns the entity that need to get modified description about the target request data service type to which the request was made whether cross-referencing is allowed for the resource in question. entity container of the entity which is getting modified. Returns the entity that needs to get modified Modify the value of the given resource to the given value description about the request resource that needs to be modified the new value for the target resource Service this request is against Get the resource referred by the given segment information about the segment. full name of the resource referred by the segment. data service type to which the request was made whether to check if the resource is null or not. returns the resource returned by the provider. Creates a Media Link Entry. Full type name for the MLE to be created. Request stream from the host. Service this request is against. Description of the target request. Update tracker instance to fire change interceptor calls Newly created Media Link Entry. Copy the contents of the request stream into the default stream of the specified entity. Entity with the associated stream which we will write to. Request stream from the host Service this is request is against Description of the target request. Gets the resource from the segment enumerable. segment from which resource needs to be returned. returns the resource contained in the request enumerable. Handle bind operation information about the request uri. the child resource which needs to be linked. data service instance update tracker instance to fire change interceptor calls returns the parent object to which an new object was linked to. Creates a new value for a collection property. The new collection as an IList. Returns a read-only version of the specified collection. The collection to convert to read-only. A read-only collection. returns true if the null attribute is specified and the value is true xml reader from which attribute needs to be read true if the null attribute is specified and the attribute value is true Returns the index of the entity that need to get modified description about the target request Returns the index of the entity that needs to get modified Reads the action parameters from the payload. Segment info for the action whose parameters are being read. Data service instance. A dictionary of parameter name and parameter value pairs. Deserializes the given stream into clr object as specified in the payload The payload entity type for the instance we are returning. the object instance that it created and populated from the reader Handles post request. Returns the true target resource type of the request. i.e. if a more derived type is on the payload, the type from the payload is returned here. returns the resource that is getting inserted or binded - as specified in the payload. Update the resource specified in the given request description. Returns the entity being modified. Update the object count value to the given value. value to be set for object count. Set the value of the given resource property to the new value property whose value needs to be updated instance of the declaring type of the property for which the property value needs to be updated new value for the property Service this is request is against Set the value of the open property instance of the declaring type of the property for which the property value needs to be updated name of the open property to update new value for the property Service this request is against Reads the content from the stream reader and returns it as string stream reader from which the content needs to be read string containing the content as read from the stream reader Make sure binding operations cannot be performed in PUT operations http method name for the request. Creates a new SegmentInfo for the specified . Property to create segment info for (possibly null). Name for the property. Target resource set for the property. Whether a single result is expected. A new instance that describes the specfied as a target, or an open proprty if is null. Reads the given payload and return the top level object. Info about the object being created. Instance of the object created. Provides an opportunity to clean-up resources. Whether the call is being made from an explicit call to IDisposable.Dispose() rather than through the finalizer. Marks the fact that a recursive method was entered, and checks that the depth is allowed. Marks the fact that a recursive method is leaving. Returns the target/child resource to bind to an resource, which might be getting inserted or modified. Since this is a target resource, null is a valid value here (for e.g. /Customers(1)/BestFriend value can be null) uri referencing to the resource to be returned. whether the resource can be null or not. returns the resource as referenced by the uri. Throws 404 if the checkNull is true and the resource returned is null. Returns the target/child resource to bind to an resource, which might be getting inserted or modified. Since this is a target resource, null is a valid value here (for e.g. /Customers(1)/BestFriend value can be null) uri referencing to the resource to be returned. whether the resource can be null or not. returns the resource as referenced by the uri. Throws 404 if the checkNull is true and the resource returned is null. Gets a resource referenced by the given segment info. resource type whose instance needs to be created segment info containing the description of the uri verify etag value of the current resource with one specified in the request header validate that the resource cannot be null. reset the resource as referred by the segment. a new instance of the given resource type with key values populated Check and increment the object count Bump the minimum DSV requirement based on the specifics of the given resource type. Resource type to inspect True if resourceType is the type for the top level element in the payload. Returns collection type for the specified type name from the payload. Collection type name read from payload. The name of the property being read. Collection type. Returns true if we need to query the provider before updating. request description value corresponding to the payload for this request returns true if we need to issue an query to satishfy the request Returns the entity that need to get modified description about the target request data service type to which the request was made whether cross-referencing is allowed for the resource in question. entity container of the entity which is getting modified. index of the segment which refers to the entity getting modified. Returns the entity that needs to get modified Tracker for actions taken during deserialization. Data service for which the deserializer will act. Return the IUpdatable object to use to make changes to entity states Returns true if the request method is a PUT, MERGE, or PATCH method Returns the current count of number of objects referred by this request. Gets a value indicating whether the request is Atom Gets a value indicating whether the request is verbose json Gets a value indicating whether the request is json light Request description for the top level target entity. Whether a response will be sent for the POST/PUT/MERGE request. true if response will be sent, false otherwise. The message reader being used. Cached value indicating whether the request is Atom Cached value indicating whether the request is verbose JSON Cached value indicating whether the request is JSON Light Initializes a new instance of . true if we're reading an update operation; false if not. Data service for which the deserializer will act. Tracker to use for modifications. The request description to use. If true, the message reader settings will use the WcfDataServicesServer behavior; if false, the message reader settings will use the default behavior. Converts a primitive value read by ODataMessageReader into a primitive value acceptable by WCF DS. The value reported by ODataMessageReader. The resource type of the value to read, null if it is an open property value. The value converted to the WCF DS value space. Asserts that the format of the given reader is one of the given expected formats The current reader The expected formats Reads the input request payload and returns the WCF DS value representation of it. Info about the request to read. The WCF DS representation of the value read. Reads the given payload and return the top level object. Info about the object being created. Instance of the object created. Provides an opportunity to clean-up resources. Whether the call is being made from an explicit call to IDisposable.Dispose() rather than through the finalizer. Converts the value reported by OData reader into WCF DS resource. The value reported by the reader. The expected resource type of the value. This should be null if we were reading open value. The converted WCF DS resource. In case of complex or collection this will be a newly created instance. Applies a property from the reader to the specified resource. The OData property to apply. Type of resource. Resource to set value on. Gets the IEdmModel type reference for a specified . The resource type to get the type reference for. Custom annotations to use when creating type reference. The type reference. Gets the IEdmModel schema type for the specified The resource type to get the schema type for. The schema type. Gets the IEdmFunctionImport for a specified . The service action or function to get the function import for. The function import. Gets the entity set for the specified ResourceSet instance. an IEdmEntitySet instance for the given resource set. Converts the complex value reported by OData reader into WCF DS complex resource. The complex value reported by the reader. The expected resource type of the complex value. null if it's an open value. The newly created WCF DS complex resource. Converts the collection reported by OData reader into WCF DS collection resource. The collection reported by the reader. The expected collection resource type. THe newly created WCF DS collection resource. The message reader to use for reading the request body. Gets a value indicating whether the request is Atom Gets a value indicating whether the request is verbose json Gets a value indicating whether the request is json light Initializes a new instance of . true if we're reading an update operation; false if not. Data service for which the deserializer will act. Tracker to use for modifications. The request description to use. Reads the input request payload and returns the WCF DS value representation of it. Info about the request to read. The WCF DS representation of the value read. Reads an entry from the and all it's children including expanded entries and feeds. The ODataReader to read from. The segment info for the top-level entry to read. The with annotations which store the navigation links and their expanded values. Creates or gets an entity resource token instance based on the data from entry in the payload. The resource is then set on the entry annotation. The segment info describing the entity in question. The OData entry instance read from the payload. The entry annotation for the entry to process. true if this is a top-level entry, false otherwise. Applies properties and navigation links to the entity resource token instance based on the data from entry in the payload. The segment info describing the entity in question. The OData entry instance read from the payload. The entry annotation for the entry to process. Create the entity resource update token and applies properties and navigation links to the entity resource token instance based on the data from entry in the payload. The segment info describing the entity in question. The OData entry instance read from the payload. The entity resource update token for the created entity. This method should only be called on nested entries! Gets the resource type for an entry based on the type name from the payload. The entry to get the type for. Expected base type for the entity. Resolved type. Applies non-navigation properties. The entry object to read the properties from. The type of the entity to apply the properties to. The entity resource to apply the properties to. Applies navigation properties. The entry annotation for the entry to process. The resource set into which the entity belongs to. The type of the entity to apply the properties to. The entity resource to apply the properties to. Applies a navigation link as a navigation property. The navigation link read from the payload to apply. The resource set into which the entity belongs to. The type of the entity to apply the properties to. The navigation property which coresponds with the navigation link. The entity resource to apply the properties to. Applies an entity reference link (value of a navigation link) to an entity. The navigation property for which the entity reference link was specified. The entity resource to apply the value to. The entity reference link to apply. Applies a feed which is the content of a navigation property to the specified entity resource. The navigation property for which the feed was specified. The resource set of the target of the navigation property. The entity resource to apply the value to. The feed to apply. Note that the targetResourceSet will be filled for non-ATOM formats, but it will be null for ATOM. Applies an entry which is the content of a navigation property to the specified entity resource. The navigation property for which the feed was specified. The resource set of the target of the navigation property. The entity resource to apply the value to. The entry to apply. This can be null if the null value should be applied. Note that the targetResourceSet will be filled for non-ATOM formats, but it will be null for ATOM. Sets a resource reference to null. The entity resource to set the resource reference on. The navigation property for which to set the reference to null. This verifies that the navigation property is a resource reference and fails otherwise. Sets a resource reference to resource referenced by a URL. The entity resource to set the resource reference on. The navigation property for which to set the reference to null. The URL which points to the resource to set as the value of the navigation property. Gets a target resource set for the specified navigation property. The resource set of the entity on which the navigation property is accessed. The resourec type of the entity on which the navigation property is accessed. The navigation property to access. The target resource set of the navigation property. This method validates that the resource set is accessible and it performs appropriate version checks. The annotation used on ODataEntry instances to store the list of navigation links for that entry. The entity resource update token for the entry. The resolved entity type for the entry. The annotation used on ODataFeed instances to store the list of entries in that feed. The annotation used on ODataNavigationLink instances to store the list of children for that navigation link. A navigation link for a singleton navigation property can only contain one item - either ODataEntry or ODataEntityReferenceLink. A navigation link for a collection navigation property can contain any number of items - each is either ODataFeed or ODataEntityReferenceLink. Implements deserializer for Action parameters payload. Initializes a new instance of . true if we're reading an update operation; false if not. Data service for which the deserializer will act. Tracker to use for modifications. The request description to use. Reads the Action parameters payload and returns the WCF DS value representation of each parameter. Info about the parameters payload to read. The WCF DS representation of the parameters read. Reads the items from a collection and return it as an ODataCollectionValue. Collection reader to read from. An ODataCollectionValue instance containing all items in the collection. Take a URI string and escape the data portion of it Sensitive characters that we should always skip This should be the set of Http control characters intersecting with the set of characters OData literal format allows outside of strings (In V3: only +, as used in double literals ex. 3E+8) input string output string the current index current quoted data string constructor The string to be escaped. Escape a URI string's data string portion The input string The escaped string Build a new escaped string The escaped string Read quoted string The character that started the quote Implements deserializer for entity reference links (the $links payloads). Initializes a new instance of . true if we're reading an update operation; false if not. Data service for which the deserializer will act. Tracker to use for modifications. The request description to use. Reads the input request payload and returns the WCF DS value representation of it. Info about the request to read. For entity reference requests this is null. The WCF DS representation of the value read. For entity reference link this is the Uri of the link. Implements deserializer for media resources. Initializes a new instance of . true if we're reading an update operation; false if not. Data service for which the deserializer will act. Tracker to use for modifications. The request description to use. Create the object graph from the given payload and return the top level object. Info about the object being created. Instance of the object created. Gets a value indicating whether the request is Atom Gets a value indicating whether the request is verbose json Gets a value indicating whether the request is json light Implementation of IEnumerable interface to be used as the value of a collection property when passed the provider. This implementation can only be enumerated once and doesn't provide any other interfaces then the IEnumerable. The IEnumerator returned by this does not support Reset and implement IDisposable. The source enumerable this class is wrapping. This is reset to null once an enumerator was created and is used to detect possible multiple calls to GetEnumerator. Constructor. The source enumerable which contains the values to report. Returns an enumerator to use for enumerating over the results. Enumerator to use for enumerating over the results. Implementation of the IEnumerator interface. This implementation also implements IDisposable to denote that callers should call Dispose once done with it. The enumerator to get the values from. Constructor. The source enumerator which is used to get the actual values to report. Moves to the next result. true if next result is available, false if no more results are available. Resets the enumeration. This method is not supported. Diposes the enumerator. The current result. Implements deserializer for top level properties. Initializes a new instance of . true if we're reading an update operation; false if not. Data service for which the deserializer will act. Tracker to use for modifications. The request description to use. Reads the input request payload and returns the WCF DS value representation of it. Info about the request to read. The WCF DS representation of the value read. Implements deserializer for raw values. Initializes a new instance of . true if we're reading an update operation; false if not. Data service for which the deserializer will act. Tracker to use for modifications. The request description to use. Reads the input request payload and returns the WCF DS value representation of it. Info about the request to read. The WCF DS representation of the value read. Provides values to describe the kind of thing targetted by a client request. Specifies no rights on this service operation. Specifies the right to read one resource per request. Specifies the right to read multiple resources per request. Specifies the right to read single or multiple resources in a single request. Specifies all rights to the service operation. Actually use ServiceOperationRights, not EntitySetRights for the service operation. Use this attribute on a DataService service operation method to indicate than the IQueryable returned should contain a single element. Initializes a new instance of the class. This class wraps all the calls to IUpdatable interface. data service instance. instance implementation of IUpdatable. creates an instance of UpdatableWrapper, which wraps all the calls to IUpdatable interface. instance of the data service. Tries to load the update provider implementation if it has not already been loaded, then return the loaded IUpdatable implementation. Returns an IUpdatable implementation. Creates the resource of the given type and belonging to the given container container name to which the resource needs to be added full type name i.e. Namespace qualified type name of the resource object representing a resource of given type and belonging to the given container Gets the resource of the given type that the query points to query pointing to a particular resource full type name i.e. Namespace qualified type name of the resource object representing a resource of given type and as referenced by the query Queues up the to be invoked during IUpdatable.SaveChanges(). The invokable instance whose Invoke() method will be called during IUpdatable.SaveChanges(). Resets the value of the given resource to its default value resource whose value needs to be reset same resource with its value reset If the provider implements IConcurrencyProvider, then this method passes the etag values to the provider, otherwise compares the etag itself. etag values for the given resource. container for the given resource. Sets the value of the given property on the target object target object which defines the property name of the property whose value needs to be updated value of the property Gets the value of the given property on the target object target object which defines the property name of the property whose value needs to be updated the value of the property for the given target resource Sets the value of the given reference property on the target object target object which defines the property name of the property whose value needs to be updated value of the property Adds the given value to the collection target object which defines the property name of the property whose value needs to be updated value of the property which needs to be added Removes the given value from the collection target object which defines the property name of the property whose value needs to be updated value of the property which needs to be removed Delete the given resource resource that needs to be deleted Saves all the pending changes made till now Returns the actual instance of the resource represented by the given resource object object representing the resource whose instance needs to be fetched The actual instance of the resource represented by the given resource object Revert all the pending changes. Dispose the update provider instance Parse the given etag value in the If-Match request header. List of etag properties for the type whose etag values we are parsing. value of the If-Match header as specified in the request. returns the etag value as a list containing the property name and its corresponding value. If the If-Match header value is '*', then returns an empty collection. Get the instance of IDataServiceUpdateProvider2. Get the instance of IUpdatable. Provides a class used to track updates for callbacks. Underlying data service instance. A dictionary of containers mapping to the changes on those containers, each of which consists of an element and the action taken on it. Initializes a new instance. underlying data source instance. Fires the notification for a single action. Service on which methods should be invoked. Object to be tracked. Container in which object is changed. Action affecting target. Create a new instance of update tracker underlying data service. Returns a new instance of UpdateTracker. Fires all notifications Tracks the specified for a given on the . Object to be tracked. Container in which object is changed. Action affecting target. If was already being tracked, the actions are OR'ed together. Asserts valid value for tracking update actions. Object to be tracked. Container in which object is changed. A set of utility methods for dealing with versions and versioning. Version 1.0. Version 2.0. Version 3.0. Default set of known data service versions, currently 1.0, 2.0 and 3.0 The default response version of the data service. If no version is set for a particular response The DataService will respond with this version (1.0) Given a enumeration returns the instance with the same version number. The protocol version enum value to convert. The version instance with the version number for the specified protocol version. If necessary raises the metadata edm schema version. Version to raise. New version to raise to. New version if the target version is greater than the existing version. If necessary raises version to the version requested by the user. Version to raise. New version to raise to. New version if the requested version is greater than the existing version. If necessary raises version to the version requested by the user. Version to raise. New version to raise to. New version if the requested version is greater than the existing version. Check the feature version with the max protocol version specified in the server configuration. feature version that is required to understand the current request. maxProtocolVersion that is specified in the server configuration. Verify that the specified request version is greater than or equal to the required request version Minimum version required to process the request. Request version as specified in the request header. Returns the highest response version possible, which is the min of MPV and RequestMaxDSV MPV as defined in the server. Request MaxDSV header value. the minimum of and . Gets the response version for an error payload. A comma-separated list of client-supported MIME Accept types. The MinDataServiceVersion of the request. The MaxDataServiceVersion of the request. The max protocol version as specified in the config. The response version to be used for an error payload. This function is specific to exceptions. For V1 and V2, if the request header has a MinDSV, we will still return RequestDescription.DataServiceDefaultResponseVersion. This helps avoid breaking changes. For V3, we return what is in the request header, provided the version is valid. Verify that the request version is a version we know. request version from the header returns true if the request version is known Determines the highest known version which is less than or equal to the given version. The version to match. The highest known version which is less than or equal to the given version. Goes through all visible types in the provider and determine the metadata version. Provider wrapper instance. Returns the metadata version. Returns the edm schema version. Update the various versions based on the metadata of the given resource type resource type whose metadata needs to be looked at. Reference to the metadata version to be updated. Reference to the edm schema version to be updated. Utility methods for this project. Bindings Flags for public instance members. A zero-length object array. A zero-length string array. A zero-length keyValuePair of string and object. Collection of ExpandedWrapper types and their corresponding number of parameters Applies the host specified in a request if available to the given . URI to update with host (and port) information. RequestMessage header (possibly null or empty) The updated URI. Checks the argument value for null and throw ArgumentNullException if it is null type of the argument argument whose value needs to be checked name of the argument returns the argument back Checks the string argument value for empty or null and throw ArgumentNullException if it is null argument whose value needs to be checked name of the argument returns the argument back Check whether the given value for ServiceOperationResultKind is valid. If not, throw argument exception. value for ServiceOperationResultKind name of the parameter if the value is not valid. Check whether the given value for ResourceTypeKind is valid. If not, throw argument exception. value for ResourceTypeKind name of the parameter if the value is not valid. Checks that the given ResourceType's ResourceTypeKind is not Collection or EntityCollection, and throws an error saying that open properties cannot have collections if needed. ResourceType to check. Name of the property that was assigned a value of type . Checks that the are valid and throws an exception otherwise. Value to check. Name of parameter for the exception message. Checks that the are valid and throws an exception otherwise. Value to check. Name of parameter for the exception message. Checks that the are valid and throws an exception otherwise. Value to check. Name of parameter for the exception message. Checks the specifid value for syntax validity. Whether syntax is valid. segment indentifier for which the resource was null. This helper method is used to keep syntax check code more terse. Checks the specific value for syntax validity. Whether syntax is valid. This helper method is used to keep syntax check code more terse. Try and resolve the path identifier as resource type provider instance. identifier as specified in the path. expected resource type. whether the previous path segment was a type identifier or not. an instance of resource type with the same name as the identifier. If there is no resource type with the given name, returns null. Debug.Assert(Enum.IsDefined(typeof(T), value)) type of enum enum value Disposes of if it implements . Object to dispose, possibly null. Adds an empty last segment as necessary to the specified . An absolute URI. with an empty last segment (ie, "ending with '/'"). Gets the public name for the specified . Type to get name for. A public name for the specified , empty if it cannot be found. Marks the fact that a recursive method was entered, and checks that the depth is allowed. Maximum recursion limit. Depth of recursion. Marks the fact that a recursive method was entered, and checks that the depth is allowed. Maximum recursion limit. Depth of recursion. Marks the fact that a recursive method is leaving. Depth of recursion. Converts comma-separated entries with no quotes into a text array. Text to convert. A string array that represents the comma-separated values in the text. This method can be used to provide a simpler API facade instead of identifier arrays. Test if any of the types in the hierarchy of is a Media Link Entry. base type of the hierarchy IDataServiceMetadataProvider interface instance Returns true if or at least one of its descendants is a Media Link Entry. copy from one stream to another input stream output stream reusable buffer count of copied bytes copy from one stream to another input stream output stream size of buffer to use during copying. If 0 is specified, the default of 64K will be used. count of copied bytes Creates a delegate that when called creates a new instance of the specified . Type of the instance. full name of the given clr type. If the type name is not specified, it takes the full name from the clr type. Type to return from the delegate. A delegate that when called creates a new instance of the specified . Checks whether the specified type is a known primitive type. Type to check. true if the specified type is known to be a primitive type; false otherwise. Try to resolve a type by name by first trying primitive types and then provider's types Provider to resolve non-primitive types against Type name ResourceType object for this type, or null if none found Get a primitive or EDM type from an instance Provider to get EDM types from, in case is not a primitive. Instance to get the type from A ResourceType for this instance or null if it is not a known type Get the non primitive type resource and checks that the given instance represents a single resource. underlying data source. instance of the resource. returns the resource type representing the given resource instance. Returns the ItemType if is a EntityCollectionResourceType or a CollectionResourceType, otherwise return . Resource type in question. Returns the ItemType if is a EntityCollectionResourceType or a CollectionResourceType, otherwise return . Checks whether the specified is a valid MIME type with no parameters. Simple MIME type. true if the specified is valid; false otherwise. See http://tools.ietf.org/html/rfc2045#section-5.1 for futher details. Checks whether the specified element is an of other elements. Element to check (possibly null). , or null if is not supported. true if supports IEnumerable and is not a primitive type (strings and byte arrays are also enumerables, but they shouldn't be iterated over, so they return false). Returns false if the given etag value is not valid. Look in http://www.ietf.org/rfc/rfc2616.txt?number=2616 (Section 14.26) for more information etag value to be checked. true if we allow strong etag values. returns true if the etag value is valid, otherwise returns false. Checks whether the specified can be assigned null. Type to check. true if type is a reference type or a Nullable type; false otherwise. Gets a type for that allows null values. Type to base resulting type on. if it's a reference or Nullable<> type; Nullable<> otherwise. Checks whether the specified type is a generic nullable type. Type to check. true if is nullable; false otherwise. Returns the etag for the given resource. Resource for which etag value needs to be returned. Resource type of the . list of etag properties for the given resource Service to which the request was made. whether the request was a get method or not. ETag value for the given resource, with values encoded for use in a URI. Returns the etag for the given resource. Data service to which the request was made. Resource for which etag value needs to be returned. ResourceType instance containing metadata about . resource set to which the resource belongs to. ETag value for the given resource, with values encoded for use in a URI. Gets an for the specified , mapping well-known exceptions to the appropriate HTTP status code. Request enumerable to get enumerator for. An for the specified . Given the request description, query for the parent entity resource and compare the etag, if specified in the header entity resource for which etag needs to be checked. token as returned by the IUpdatable interface methods. container to which the entity resource belongs to. Underlying service to which the request was made to. out bool which indicates whether response needs to be written for GET operations current etag value for the given entity resource. Write the etag header value in the response description about the request made etag value that needs to be written. responseMessage implementation for this data service. If the specified reader is not on an element, advances to one, skipping document declaration nodes (typically at the beginning of a document), comments, processing instructions and whitespace. Reader to reposition. true if the reader is left on an element; false otherwise. Checks whether a given object implements IServiceProvider and if it supports the specified service interface The type representing the requested service Object that acts as the service provider An object implementing the requested service, or null if not available Gets the type corresponding to the wrapper based in input parameter types Parameter types Delegate that generates the error Closed generic type Checks if the given type is an ExpandedWrapper type Input closed type true if the given type is one of ExpandedWrapper types Returns an enumeration that picks one element from each enumerable and projects from them. Type of first enumerable. Type of second enumerable. Type of zipped projection. Left enumerable. Right enumerable. Projecting function. An enumeration with the projected results. get attribute value from specified namespace or empty namespace reader attributeName namespaceUri attribute value Disposes the stream provider and returns a no-op method for a stream-writing action. A delegate that can serialize the result. Get the value of the given property. underlying data provider. instance of the type which contains this property. resource type instance containing metadata about the declaring type. resource property instance containing metadata about the property. Name of the property to read if is not given. the value of the given property. Returns true if the specified value should be treated as a null value The property value to check for being null. true if the value should be treated as null, or false otherwise. This methods checks for being CLR null as well as DBNull.Value. Test if the type is an ISpatial derived type the type to be tested true if the type implements the ISpatial interface, false otherwise. Sets the response headers for the given operation message. ODataBatchOperationResponseMessage instance for the batch operation. RequestMessage containing all the response headers for the batch operation. Checks if the given resource type instance is one of the known binary primitive types. Resource type instance. True if the given resource type instance is one of the known binary primitive types, otherwise returns false. Validate the given annotation. Reference to the dictionary instance where custom annotations are stored. NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. Creates the full name for a custom annotation. Namespace to which the custom annotation belongs to. Name of the annotation. The full name for the annotation Reads from the XML reader skipping insignificant nodes. The XML reader to read from. Do not use MoveToContent since for backward compatibility reasons we skip over nodes reported as Text which have whitespace only content (even though the XmlReader should report those as Whitespace). Creates ODataMessageReaderSettings for the specified data service. The data service instance to create the settings for. If true, the new reader settings will use the WcfDataServicesServer behavior; if false, the new reader settings will use the default behavior. New instance of the message reader settings. Ensures that if there is a direct reference like "/Customers(4)" or $value then the result object is not null. Query result entity or value. Segment details for the . Returns the entity set for the given resource set. Underlying data provider. IEdmModel instance containing all the metadata information. ResourceSetWrapper instance. an IEdmEntitySet instance for the given resource set. Gets a non-nullable version of the specified type. Type to get non-nullable version for. if type is a reference type or a non-nullable type; otherwise, the underlying value type. Checks that no query arguments were sent in the request. Service to check. true if only V2 query parameters must be checked, otherwise all the query parameters will be checked. Regular processing checks argument applicability, but for service operations that return an IEnumerable this is part of the contract on service operations, rather than a structural check on the request. Checks that no set query arguments were sent in the request. Service to check. Checks that no query arguments were sent in the request. Service to check. Regular processing checks argument applicability, but for service operations that return an IEnumerable this is part of the contract on service operations, rather than a structural check on the request. Test if the given segment is a cross referenced segment in a batch operation Segment in question service instance True if the given segment is a cross referenced segment Gets the resource type which the resource property is declared on. resource type to start looking resource property in question root type in the hierarchy at which we need to stop. actual resource type that declares the property or the root type if the property is declared in a more base type than the given root type. Checks whether the specifies string is null or blank. Text to check. true if text is null, empty, or all whitespace characters. Gets the host and port parts of a RequestMessage header if they are both present. RequestMessage header value (non-null). Scheme for the host and port values. If the result is true, the host part of the header. If the result is false, the port part of the header. true if the header has a host and port part, false otherwise. Checks whether the specifies string is null or blank. Text to check. true if text is null, empty, or all whitespace characters. Represents a pair of Expanded wrapper with the index in the array The only reason to create this class is to avoid CA908 for KeyValuePairs Type Index A workaround to a problem with FxCop which does not recognize the CheckArgumentNotNull method as the one which validates the argument is not null. This has been suggested as a workaround in msdn forums by the VS team. Note that even though this is production code the attribute has no effect on anything else. Class that contains all the constants for various schemas. "InitializeService" method name for service initialize. id of the corresponding body byte-length of the corresponding body mime-type of the corresponding body content disposition of the response (a hint how to handle the response) 'DataServiceVersion' - HTTP header name for data service version. 'MinDataServiceVersion' - HTTP header name for minimum understood data service version. 'MaxDataServiceVersion' - HTTP header name for maximum understood data service version. 'Prefer' - HTTP request header name for client preferences. Refer to: http://tools.ietf.org/id/draft-snell-http-prefer-02.txt for details. 'Preference-Applied' - HTTP response header name for client preference response. 'no-cache' - HTTP value for Cache-Control header. 'charset' - HTTP parameter name. HTTP method name for GET requests. HTTP method name for POST requests. Http Put Method name - basically used for updating resource. HTTP method name for delete requests. HTTP method name for MERGE requests. HTTP method name for PATCH requests. HTTP query string parameter value for expand. HTTP query string parameter value for filtering. HTTP query string parameter value for ordering. HTTP query string parameter value for skipping elements. HTTP query string parameter value for limiting the number of elements. HTTP query string parameter value for counting query result set HTTP query string parameter value for skipping results based on paging. Property prefix for the skip token property in expanded results for a skip token HTTP query string parameter value for counting query result set HTTP query string parameter value for projection. HTTP query string parameter for specifying the requested content-type of the response. HTTP query string parameter for specifying the a callback function name for JSONP (JSON padding). 'q' - HTTP q-value parameter name. 'X-HTTP-Method' - HTTP header name for requests that want to tunnel a method through POST. HTTP name for Accept header HTTP name for Accept-Charset header HTTP name for If-Match header HTTP name for If-None-Match header HTTP name for User-Agent header multi-part keyword in content-type to identify batch separator 'X-Content-Type-Options' - HTTP header for Internet Explorer 8 and 9 to specify options for content-type handling. An 'X-Content-Type-Options' HTTP header argument to instruct IE8/9 not to sniff the content and instead display it according to the content-type header. 'Allow' - HTTP response header for allowed verbs. HTTP name for Cache-Control header. HTTP name for ETag header HTTP name for location header HTTP name for DataServiceId header HTTP name for Status-Code header multi-part mixed batch separator for response stream multi-part mixed changeset separator Content-Transfer-Encoding header for batch requests. Http Version in batching requests and response. To checks if the resource exists or not. Weak etags in HTTP must start with W/. Look in http://www.ietf.org/rfc/rfc2616.txt?number=2616 section 14.19 for more information. The mime type that client wants the response to be in. The character set the client wants the response to be in. The name of the Cookie HTTP header The Slug header name. Used by ATOM to hint the server on which MR is being POSTed. MIME type for requesting any media type. MIME type general binary bodies (http://www.iana.org/assignments/media-types/application/). MIME type for ATOM bodies (http://www.iana.org/assignments/media-types/application/). MIME type for JSON bodies in light mode with minimal metadata. MIME type for JSON bodies in light mode with full metadata. MIME type for JSON bodies in light mode with no metadata. MIME type for JSON bodies (implies light in V3, verbose otherwise) (http://www.iana.org/assignments/media-types/application/). MIME type for JSON bodies in verbose mode (http://www.iana.org/assignments/media-types/application/). MIME type for batch requests - this mime type must be specified in CUD changesets or GET batch requests. MIME type for XML bodies. "application/xml", MIME type for metadata requests. 'application' - MIME type for application types. 'json' - constant for MIME JSON subtypes. 'xml' - constant for MIME xml subtypes. 'odata' - parameter name for JSON MIME types. MIME type for changeset multipart/mixed MIME type for plain text bodies. 'text' - MIME type for text subtypes. MIME type for XML bodies (deprecated). Content-Transfer-Encoding value for batch requests. text for the utf8 encoding A prefix that turns an absolute-path URI into an absolute-URI. A segment name in a URI that indicates metadata is being requested. A segment name in a URI that indicates a plain primitive value is being requested. A segment name in a URI that indicates metadata is being requested. A segment name in a URI that indicates that this is a link operation. A segment name in a URI that indicates that this is a count operation. A const value for the query parameter $inlinecount to set counting mode to inline A const value for the query parameter $inlinecount to set counting mode to none Uri method name for Enumerable.Any(). Uri method name for Enumerable.All(). Implicit parameter "it" used for Queryable.Where lambda. "Binary" - WCF element name for binary content in XML-wrapping streams. Schema Namespace prefix for atom. XML element name to mark content element in Atom. XML element name to mark entry element in Atom. XML element name to mark feed element in Atom. 'author' - XML element name for ATOM 'author' element for entries. 'contributor' - XML element name for ATOM 'author' element for entries. 'category' - XML element name for ATOM 'category' element for entries. XML element name to mark link element in Atom. Type of content for syndication property which can be one of Plaintext, Html or XHtml Whether to keep the property value in the content section TargetNamespace prefix for non-syndication mapping TargetNamespace URI for non-syndication mapping Target element or attribute name Source property name author/email author/name author/uri published rights summary title 'updated' - XML element name for ATOM 'updated' element for entries. contributor/email contributor/name contributor/uri updated Plaintext HTML XHTML XML element name to mark href attribute element in Atom. XML attribute name to mark the hreflang attribute in Atom. XML element name to mark summary element in Atom. XML element name to mark author/name or contributor/name element in Atom. XML element name to mark author/email or contributor/email element in Atom. XML element name to mark author/uri or contributor/uri element in Atom. XML element name to mark published element in Atom. XML element name to mark rights element in Atom. XML element name to mark 'collection' element in APP. XML element name to mark 'service' element in APP. XML value for a default workspace in APP. XML element name to mark 'workspace' element in APP. XML element name to mark title element in Atom. XML attribute name to specify the type of the element. Atom link relation attribute value for self links. Atom link relation attribute value for edit links. Atom link relation attribute value for edit-media links. Link relation: alternate - refers to a substitute for this context. Link relation: related - identifies a related resource. Link relation: enclosure - identifies a related resource that is potentially large and might require special handling. Link relation: via - identifies a resource that is the source of the information in the link's context. Link relation: describedby - refers to a resource providing information about the link's context. Link relation: service - indicates a URI that can be used to retrieve a service document. Atom attribute which indicates the null value for the element. Atom attribute which indicates the etag value for the declaring entry element. 'Inline' - wrapping element for inlined entry/feed content. Element containing property values when 'content' is used for media link entries 'count' element 'element', the XML element name for items in enumerations. XML element name for an error. XML element name for an error code. XML element name for the inner error details. XML element name for an internal exception. XML element name for an exception type. XML element name for an exception stack trace. XML element name for an error message. 'false' literal, as used in XML. 'true' literal, as used in XML. XML attribute value to indicate the base URI for a document or element. 'lang' XML attribute name for annotation language. XML attribute name for whitespace parsing control. XML attribute value to indicate whitespace should be preserved. XML attribute name to pass to the XMLReader.GetValue API to get the xml:base attribute value. Schema Namespace For Edm. Schema Namespace For Edm 1.1. Schema Namespace For Edm 1.2. XML namespace for annotations in EDM such as 'StoreGeneratedPattern' XML namespace for data services. XML namespace for data service annotations. XML namespace for data service links. XML namespace for data service related $links. XML namespace for data service named media resources. XML namespace for data service edit-media link for named media resources. ATOM Scheme Namespace For DataWeb. Schema Namespace for Atom Publishing Protocol. Schema Namespace For Atom. Schema Namespace prefix For xmlns. Schema Namespace prefix For xml. Schema Namespace Prefix For DataWeb. 'adsm' - namespace prefix for DataWebMetadataNamespace. 'http://www.w3.org/2000/xmlns/' - namespace for namespace declarations. Edmx namespace in metadata document. Prefix for Edmx Namespace in metadata document. IANA link relations namespace. The empty namespace. Association Element Name in csdl. AssociationSet Element Name in csdl. ComplexType Element Name in csdl. Dependent Element Name in csdl. The name of the EDM collection type. Attribute name used to indicate the real type of an EDM property or parameter, in cases where it needs to be different from the Type attribute of the Property or Parameter element. This is used to support collection types and binary keys, which are incompatible with EDM 1.1, which we are currently using for validation purposes. This attribute is inserted into the CSDL in memory while codegen is processing properties that require special type handling and should only be used in that scenario. This is not a real EDM or Data Services attribute. TypeRef element name in CSDL document. EntitySet attribute name in CSDL documents. EntitySetPath attribute name in CSDL documents. ExtensionMethod attribute name in CSDL documents. Composable attribute name in CSDL documents. SideEffecting attribute name in CSDL documents. FunctionImport element name in CSDL documents. Mode attribute name in CSDL documents. Mode attribute value for 'in' direction in CSDL documents. Parameter element name in CSDL documents. ReturnType attribute name in CSDL documents. Attribute name used to indicate the real type of an EDM function import return type, in cases where it needs to be different from the ReturnType attribute of the function import element. This is used to support special primitive types, which are incompatible with EDM 1.1, which we are currently using for validation purposes. This attribute is inserted into the CSDL in memory while codegen is processing function imports that require special type handling and should only be used in that scenario. This is not a real EDM or Data Services attribute. End Element Name in csdl. EntityType Element Name in csdl. EntityContainer Element Name in csdl. Key Element Name in csdl. NavigationProperty Element Name in csdl. OnDelete Element Name in csdl. Principal Element Name in csdl. Property Element Name in csdl. PropetyRef Element Name in csdl. ReferentialConstraint Element Name in csdl. Role Element Name in csdl. Schema Element Name in csdl. Edmx Element Name in the metadata document. Edmx DataServices Element Name in the metadata document. Version attribute for the root Edmx Element in the metadata document. Value of the version attribute in the root edmx element in metadata document. Element name for m:action. Element name for m:function maps to m:action|m:function\@metadata maps to m:action|m:function\@target maps to m:action|m:function\@title BaseType attribute Name in csdl. EntitySet attribute and Element Name in csdl. EntitySetPath attribute and Element Name in csdl. FromRole attribute Name in csdl. Abstract attribute Name in csdl. Multiplicity attribute Name in csdl. Name attribute Name in csdl. Namespace attribute Element Name in csdl. ToRole attribute Name in csdl. Type attribute Name in csdl. Relationship attribute Name in csdl. Using element Name in csdl. Value for Many multiplicity in csdl. Value for One multiplicity in csdl. Value for ZeroOrOne multiplicity in csdl. Nullable facet name in CSDL. The attribute name of the 'Precision' facet. The attribute name of the 'Scale' facet. The attribute name of the 'MaxLength' facet. The attribute name of the 'FixedLength' facet. The attribute name of the 'Unicode' facet. The attribute name of the 'Collation' facet. The attribute name of the 'SRID' facet. Name of the concurrency attribute. Name of the default value attribute. The special value for the 'MaxLength' facet to indicate that it has the max length. The attribute name of the 'StoreGeneratedPattern' annotation The 'Computed' value for the 'StoreGeneratedPattern' annotation The 'Identity' value for the 'StoreGeneratedPattern' annotation 'MimeType' - attribute name for property MIME type attributes. 'OpenType' - attribute name to indicate a type is an OpenType property. 'HasStream' - attribute name to indicate a type has a default stream property. 'true' - attribute value to indicate a type has a default stream property. Attribute to indicate whether this is a default entity container or not. Attribute name in the csdl to indicate whether the service operation must be called using POST or GET verb. uri element name for link bind/unbind operations next element name for link paging XML element name for writing out collection of links. JSON property name for an error. JSON property name for an error code. JSON property name for the inner error details. JSON property name for an internal exception. JSON property name for an error message. JSON property name for an exception stack trace. JSON property name for an exception type. JSON property name for an error message value. namespace for edm primitive types. edm binary primitive type name edm boolean primitive type name edm byte primitive type name edm datetime primitive type name edm decimal primitive type name edm double primitive type name edm guid primitive type name edm single primitive type name edm sbyte primitive type name edm int16 primitive type name edm int32 primitive type name edm int64 primitive type name edm string primitive type name edm stream primitive type name edm string indicating that the value may be collection. Edm Geography type name Edm Geodetic point type name Edm Geodetic linestring type name Represents a geography Polygon type. Represents a geography GeomCollection type. Represents a geography MultiPolygon type. Represents a geography MultiLineString type. Represents a geography MultiPoint type. Represents an arbitrary Geometry type. Represents a geometry Point type. Represents a geometry LineString type. Represents a geometry Polygon type. Represents a geometry GeomCollection type. Represents a geometry MultiPolygon type. Represents a geometry MultiLineString type. Represents a geometry MultiPoint type. edm string primitive type name edm string primitive type name '1.0' - the version 1.0 text for a data service. '2.0' - the version 2.0 text for a data service. '3.0' - the version 3.0 text for a data service. '2.0;' - the text for the current server version text. 1 - the version 1 text for a data service. 0 - the current minor version for a data service. 'binary' constant prefixed to binary literals. 'datetime' constant prefixed to datetime literals. 'guid' constant prefixed to guid literals. 'geography' constant prefixed to geography literals. 'geometry' constant prefixed to geometry literals. 'guid' constant prefixed to guid literals. 'guid' constant prefixed to guid literals. 'X': Prefix to binary type string representation. 'M': Suffix for decimal type's string representation 'L': Suffix for long (int64) type's string representation 'f': Suffix for float (single) type's string representation 'D': Suffix for double (Real) type's string representation null liternal that needs to be return in ETag value when the value is null Incoming message property name for the original reqeust uri Incoming message property name for the original root service uri GeoRss namespace The "georss" prefix Gml Namespace Gml Prefix Embedded Gml tag inside Georss GeoRss representation of a point GeoRss representation of a line Gml representation of a point Gml representation of a point array Gml representation of a linestring Use this class to cache metadata through ProviderMetadataCacheItem instances. Type of the item to be cached. AppDomain-wide cache for metadata items. Reader/writer lock for AppDomain . Adds a new cache item, and returns the item that is put in the cache. Type of service with metadata being cached. Data context instance being cached, possibly segmenting the cache space for . Item being added. The item being put in the cache (possibly an existing one). This method is thread-safe but not re-entrant. Tries to look up metadata for the specifed service type and context instance. Type of service with metadata being cached. Data context instance being cached, possibly segmenting the cache space for . The cached metadata item, if one exists. This method is thread-safe but not re-entrant. This type is used as the key in the metadata cache. Connection string used to segment service type. Hash code for this instance. Service type. Initializes a new MetadataCacheKey instance. Service type for key. Data context instace for key, possibly null. Comparer for metadata cache keys. Compares the specified keys. First key. Second key. true if equals , false otherwise. Gets the hash code for the object. Object. The hash code for this key. Use this class to cache metadata for providers. list of top level entity sets Collection of service operations, keyed by name. Target type for the data provider. Cache of resource properties per type. Cache of immediate derived types per type. Cache of IL's instructions for getting the query root for sets. Initializes a new instance. Type of data context for which metadata will be generated. Gets the ResourceType for the given CLR type. CLR type. ResourceType instance for the given CLR type. Gets the ResourceType for the given CLR type. CLR type. ResourceType instance for the given CLR type. Adds the given ResourceType to the cache. CLR type. ResourceType instance. Collection of service operations, keyed by name. Cache of ResourceTypeCacheItems which contains the ResourceType and its metadata. Cache of immediate derived types per type. list of top level entity sets Target type for the data provider. Returns the cache of IL's instructions for getting the query root for sets. Class to cache information for the given resource type. ResourceType instance for which the metadata needs to be cached. Cache for storing the metadata about the property. Constructor Delegate for the resource type. Creates a new instance of ResourceTypeCacheItem. ResourceType instance. Gets the cache item for the given property. ResourceProperty instance. the cache item for the given property. Add the given property metadata to the cache. ResourceProperty instance. Cache item containing the metadata about the property. Cached delegate to create a new instance of this type. Gets the instance of ResourceType whose metadata is getting cached in this cache item. Class for storing metadata for a given ResourceProperty. PropertyInfo instance for the given ResourceProperty. Creates a new instance of ResourcePropertyCacheItem. PropertyInfo instance for the given ResourceProperty. Returns PropertyInfo instance for the given ResourceProperty. Use this class to cache data service information (configuration + metadata for builtin providers). Service configuration information. Service configuration information which is static such as query/change interceptors. Keep track of the calculated visibility of resource types. Maps resource set names to ResourceSetWrappers. Maps names to ResourceAssociationSets. Initializes a new instance. IDataServiceConfiguration instance containing all the configuration data. Static configuration information which includes query/change interceptors. Service configuration information. Static configuration information. Keep track of the calculated visibility of resource types. Maps resource set names to ResourceSetWrappers. Maps names to ResourceAssociationSets. This type provides constants used in Astoria expressions. "add" keyword for expressions. "and" keyword for expressions. "asc" keyword for expressions. "desc" keyword for expressions. "div" keyword for expressions. "eq" keyword for expressions. "false" keyword for expressions. "gt" keyword for expressions. "ge" keyword for expressions. "lt" keyword for expressions. "le" keyword for expressions. "mod" keyword for expressions. "mul" keyword for expressions. "not" keyword for expressions. "ne" keyword for expressions. "null" keyword for expressions. "or" keyword for expressions. "sub" keyword for expressions. "true" keyword for expressions. 'INF' literal, as used in XML for infinity. 'NaN' literal, as used in XML for not-a-number values. Use this class to parse an expression in the Astoria URI format. Literals (non-normative "handy" reference - see spec for correct expression): Null null Boolean true | false Int32 (digit+) Int64 (digit+)(L|l) Decimal (digit+ ['.' digit+])(M|m) Float (digit+ ['.' digit+][e|E [+|-] digit+)(f|F) Double (digit+ ['.' digit+][e|E [+|-] digit+) String "'" .* "'" DateTime datetime"'"dddd-dd-dd[T|' ']dd:mm[ss[.fffffff]]"'" Binary (binary|X)'digit*' GUID guid'digit*' For an identifier, EMD supports chars that match the regex [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}] IsLetterOrDigit covers Ll, Lu, Lt, Lo, Lm, Nd, this set covers the rest Text being parsed. Length of text being parsed. Position on text being parsed. Character being processed. Token being processed. Lexer ignores whitespace Initializes a new . Expression to parse. Reads the next token, skipping whitespace as necessary, advancing the Lexer. Throws on error. Starting from an identifier, reads a sequence of dots and identifiers, and returns the text for it, with whitespace stripped. The dotted identifier starting at the current identifie. Starting from an identifier, reads a sequence of dots and identifiers, and can end in a star, and returns the text for it, with whitespace stripped. Ex: identifier1.identifier2, identifier1.*, etc. If true, the dotted identifier may end in .*; if false, the dotted identifier must not end in *. The dotted identifier starting at the current identifier. Returns the next token without advancing the lexer. The next token. Check whether the current identifier is a function. If so, expand the token text to the function signature True if the current identifier is a function call Validates the current token is of the specified kind. Expected token kind. Creates an exception for a parse error. Message text. A new Exception. Reads the next token, skipping whitespace as necessary. Expand the token selection if the next token matches the input token the list of token id to match true if matched Handles lexemes that are formed by an identifier followed by a quoted string. This method modified the token field as necessary. Advanced to the next character. Parses a token that starts with a digit. The kind of token recognized. Parses white spaces Parses an identifier by advancing the current character. Sets the text position. New text position. Validates the current character is a digit. Token being processed. Text being parsed. Gets if the current char is whitespace. Gets if the current char is digit. Is the current char a valid starting char for an identifier. Valid starting chars for identifier include all that are supported by EDM ([\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}]) and '_'. Is the current char a valid non-starting char for an identifier. Valid non-starting chars for identifier include all that are supported by EDM [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Lm}\p{Nl}\p{Mn}\p{Mc}\p{Nd}\p{Pc}\p{Cf}]. This list includes '_', which is ConnectorPunctuation (Pc) Use this class to represent a system function for Astoria expressions. Function name for type casts. Function name for type checks. CLR function name for replace. CLR member for property or method invocation. Function name. Parameter types for method invocation. Conversion to expression for this function. Initializes a new . CLR member for property or method invocation. Parameter types for method invocation. Initializes a new . Name for conversion function. Parameter types for method invocation. Conversion to expression for this function. Initializes a new . CLR member for property or method invocation. Parameter types for method invocation. Conversion to expression for this function. Name for conversion function. Performs an instance method invocation. "it" expression; unused by this function. Arguments for method invocation; first one should be the target 'this'. A new expression with the method invocation. Performs a static method invocation. "it" expression; unused by this function. Arguments for method invocation. A new expression with the method invocation. Performs an instance property access. "it" expression; unused by this function. Argument for property access; instance. A new expression with the property access. Invoke the open typed method for this function. list of parameters to pass to the late bound method. A new expression with the late bound function Builds a list of function signatures. Function name. Function descriptions. A string with ';'-separated list of function signatures. Creates and populates a dictionary of system functions. A new dictionary of functions. Transforms a URI-style "substringof(a,b)" function into "a.contains(b)". Target of query; not used. Arguments to function. The conversion for this method. Performs a type check for the "it" expression. "it" expression. Argument for type check; type. A new expression with the type check. Performs a type check for a given expression. "it" expression; unused by this function. Arguments for type check; instance and type. A new expression with the type check. Performs a type check for the "it" expression. "it" expression. Argument for type check; type. A new expression with the type check. Performs a type check for a given expression. "it" expression; unused by this function. Arguments for type check; instance and resource type. A new expression with the type check. Performs a cast for the "it" expression. "it" expression. Argument for cast; type. A new expression with the cast. Performs a cast for a given expression. "it" expression; unused by this function. Arguments for cast; instance and type. A new expression with the cast. Performs a cast for the "it" expression. "it" expression. Argument for cast; type. A new expression with the cast. Performs a cast for a given expression. "it" expression; unused by this function. Arguments for cast; instance and type. A new expression with the cast. Creates a new function description for a method or property. Type on which property or method is declared. Whether an instance member is looked for. Whether a method (rather than a property) is looked for. Name of member. Parameter types. A new function description. Creates a description for a string instance method. Name of method to look up. Parameter types to match. A new function description. Creates an instance of function description for the property on the given type. Type on which the property is declared on. Name of property to look up. an instance of function description. Creates an array of function description for math method with decimal and double overloads. Name of method to look up. A new function description array. Conversion to expression for this function. Gets a value indicating whether this function is a type check or cast. Gets a value indicating whether this function is a type cast. Returns true if the function is a Replace function, otherwise returns false. Gets a value indicating whether this function requires null propagation on its parameters. Parameter types for method invocation. This class provides inner types with operation signatures. Signatures for logical operations. Logical signatures for bool arguments. First argument.Second argument. Logical signatures for bool? arguments. First argument.Second argument. Logical signatures for object arguments. First argument.Second argument. Signatures for arithmetic operations. Arithmetic signature for int arguments. First argument.Second argument. Arithmetic signature for long arguments. First argument.Second argument. Arithmetic signature for float arguments. First argument.Second argument. Arithmetic signature for double arguments. First argument.Second argument. Arithmetic signature for decimal arguments. First argument.Second argument. Arithmetic signature for int? arguments. First argument.Second argument. Arithmetic signature for long? arguments. First argument.Second argument. Arithmetic signature for float? arguments. First argument.Second argument. Arithmetic signature for double? arguments. First argument.Second argument. Arithmetic signature for decimal? arguments. First argument.Second argument. Arithmetic signature for object arguments. First argument.Second argument. Signatures for relational operations. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Relational operation signature. First argument.Second argument. Signatures for negation operations. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Signatures for logical negation operations. Negation operation signature. Argument. Negation operation signature. Argument. Negation operation signature. Argument. Signatures for enumerable operations. Enumerable operation signature. Predicate. Enumerable operation signature. Enumerable operation signature. Predicate. Enumerable operation signature. Predicate. Enumerable operation signature. Enumerable operation signature. Predicate. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. Enumerable operation signature. Selector. This class provides static methods to parse query options and compose them on an existing query. Sorts a query like a SQL ORDER BY clause does. Original source for query. Ordering definition to compose. The composed query. Filters a query like a SQL WHERE clause does. Service with data and configuration. RequestDescription instance containing information about the current request being parsed. Original source for query expression. Predicate to compose. The composed query expression. Use this class to represent a lexical token. Token representing gt keyword Token representing eq keyword Token representing lt keyword Kind of token. Token text. Position of token. Provides a string representation of this token. String representation of this token. Gets the current identifier text. The current identifier text. Checks that this token has the specified identifier. Identifier to check. true if this is an identifier with the specified text. Validates the current token is of the specified kind. Expected token kind. Checks whether this token is a comparison operator. Checks whether this token is an equality operator. Checks whether this token is a valid token for a literal. Enumeration values for token kinds. Unknown. End of text. '=' - equality character. Identifier. NullLiteral. BooleanLiteral. StringLiteral. IntegerLiteral. Int64 literal. Single literal. DateTime literal. Decimal literal. Double literal. GUID literal. Binary literal. DateTimeOffset literal. Time literal. Exclamation. OpenParen. CloseParen. Comma. Minus. Slash. Question. Dot. Star. Colon. Semicolon Spatial Literal Geometry Literal Whitespace Utilities for converting literals to/from strings. Determines whether the specified character is a valid hexadecimal digit. Character to check. true if is a valid hex digit; false otherwise. Tries to remove a literal from the specified . Prefix to remove; case insensitive. Text to attempt to remove prefix from. true if the prefix was found and removed; false otherwise. Removes quotes from the single-quotes text. Text to remove quotes from. Whether quotes were successfully removed. Provides a reflection-based provider implementation. Bindings Flags to be used for reflection. instance of the service to invoke service operations. Instance from which data is provided. Metadata to be used by the service provider. Internal providers need to know if the metadata was loaded from cache or initialized. Once we make the providers completely public, we can get rid of this. Initializes a new System.Data.Services.BaseServiceProvider instance. data service instance. data source instance. Releases the current data source object as necessary. Returns the IQueryable that represents the container. resource set representing the entity set. An IQueryable that represents the container; null if there is no container for the specified name. Gets the for the specified . Instance to extract a from. The that describes this in this provider. Get the value of the strongly typed property. instance of the type declaring the property. resource property describing the property. value for the property. Gets the value of the open property. instance of the resource type. name of the property. the value of the open property. If the property is not present, return null. Get the name and values of all the properties defined in the given instance of an open type. instance of a open type. collection of name and values of all the open properties. Invoke the given service operation instance. metadata for the service operation to invoke. list of parameters to pass to the service operation. returns the result by the service operation instance. The method must return a collection of all the types derived from . The collection returned should NOT include the type passed in as a parameter. An implementer of the interface should return null if the type does not have any derived types (ie. null == no derived types). Resource to get derived resource types from. A collection of resource types () derived from the specified or null if there no types derived from the specified exist. Returns true if represents an Entity Type which has derived Entity Types, else false. instance of the resource type in question. True if represents an Entity Type which has derived Entity Types, else false. Given the specified name, tries to find a resource set. Name of the resource set to resolve. Returns the resolved resource set, null if no resource set for the given name was found. True if resource set with the given name was found, false otherwise. Given the specified name, tries to find a service operation. Name of the service operation to resolve. Returns the resolved service operation, null if no service operation was found for the given name. True if we found the service operation for the given name, false otherwise. Given the specified name, tries to find a type. Name of the type to resolve. Returns the resolved resource type, null if no resource type for the given name was found. True if we found the resource type for the given name, false otherwise. Gets the ResourceAssociationSet instance when given the source association end. Resource set of the source association end. Resource type of the source association end. Resource property of the source association end. ResourceAssociationSet instance. Called by the service to let the provider perform data model validation. Collection of known types. Whether to use metadata cache ordering instead of default ordering. Return the list of custom annotation for the entity container with the given name. Name of the EntityContainer. Return the list of custom annotation for the entity container with the given name. Returns the "T" in the IQueryable of T implementation of type. Type to check. filter against which the type is checked The element type for the generic IQueryable interface of the type, or null if it has none or if it's ambiguous. Returns the type of the IQueryable if the type implements IQueryable interface clr type on which IQueryable check needs to be performed. Element type if the property type implements IQueryable, else returns null Returns the type of the IEnumerable if the type implements IEnumerable interface; null otherwise. type that needs to be checked Element type if the type implements IEnumerable, else returns null Checks whether the specified method has a SingleResultAttribute declared on it. Method to check. true if the specified method (in its declared type or in an ancestor declaring the type) has the SingleResultAttribute set. Gets the MIME type declared on the specified . Member to check. The MIME type declared on the specified ; null if no attribute is declared. Looks up the metadata in the cache. If not present in the cache, then loads metadata from the provider. Should service operations be loaded. Find the corresponding ResourceType for a given Type, primitive or not Instance of ProviderMetadataCacheItem. Type to look for Corresponding ResourceType, if found True if type found, false otherwise Get the PropertyInfo for the given resource property Instance of ResourceTypeCacheItem containing the ResourceType instance. ResourceProperty instance. PropertyInfo instance for the given ResourceProperty. Checks that the metadata model is consistent. Releases the current data source object as necessary. Whether this method is called from an explicit call to Dispose by the consumer, rather than during finalization. Populates the metadata for the given provider Instance of ProviderMetadataCacheItem in which metadata needs to be populated. Populate types for metadata specified by the provider list of types specified by the provider Instance of ProviderMetadataCacheItem. Populate metadata for the given clr type. type whose metadata needs to be loaded. Instance of ProviderMetadataCacheItem. resource type containing metadata for the given clr type. Returns the resource type for the corresponding clr type. clrType whose corresponding resource type needs to be returned Returns the resource type Returns the resource type for the corresponding clr type. clrType whose corresponding resource type needs to be returned Returns the resource type Get the QueryRoot delegate for the given ResourceSet. ResourceSet instance. the delegate for the given ResourceSet. Filter callback for finding IQueryable implementations. Type to inspect. Filter criteria. true if the specified type is an IQueryable of T; false otherwise. Filter callback for finding IEnumerable implementations. Type to inspect. Filter criteria. true if the specified type is an IEnumerable of T; false otherwise. Adds service operations based on methods on the data service type. Given a CLR type, provides the corresponding by either looking it up, or loading it's metadata. CLR type for which resource type is being looked up. corresponding to . Given a , finds the corresponding . Given resource type. Method implementing service operation. corresponding to . Make all the metadata readonly Returns the resource type for the corresponding clr type. If the given clr type is a collection, then resource type describes the element type of the collection. clrType whose corresponding resource type needs to be returned Returns the resource type Looks for the first resource set that the specified could belong to. Type to look for. After the method returns, the container to which the type could belong. true if a container was found; false otherwise. Returns the instance from which data is provided. Gets a value indicating whether null propagation is required in expression trees. Namespace name for the EDM container. Name of the EDM container Gets all available containers. An enumerable object with all available containers. Returns all the types in this data source Returns all known service operations. Instance of provider behavior that defines the assumptions service should make about the provider. Gets the MetadataCacheItem containing all the cached metadata. Cache of immediate derived types per type. Target type for the data provider Provides a helper class to implement $expand functionality with filters by rewriting queries and implementing custom result enumerators. Whether all values are automatically expanded in the model. Whether the provider of the IQueryable requires usage casts to System.Object when assigning to properties of that type/ For example Linq to Entities requires us not to cast here as it only supports casting of primitive types. On the other hand Linq to Objects requires casting since otherwise it would generate wrong IL. Full provider. Initializes a new instance. Full provider. Whether all values are automatically expanded in the model. Whether the provider of the IQueryable requires usage casts to System.Object when assigning to properties of that type. For example Linq to Entities requires us not to cast here as it only supports casting of primitive types. On the other hand Linq to Objects requires casting since otherwise it would generate wrong IL. Applies expansions and projections to the specified . object to expand and apply projections to. The root node of the tree which describes the projections and expansions to be applied to the . Determine if the current Response format needs epm values. An object, with the results including the expansions and projections specified in . The returned may implement the interface to provide enumerable objects for the expansions; otherwise, the expanded information is expected to be found directly in the enumerated objects. If paging is requested by providing a non-empty list in .OrderingInfo then it is expected that the topmost would have a $skiptoken property which will be an in itself and each of it's sub-properties will be named SkipTokenPropertyXX where XX represents numbers in increasing order starting from 0. Each of SkipTokenPropertyXX properties will be used to generated the $skiptoken to support paging. If projections are required, the provider may choose to return which returns instances of . In that case property values are determined by calling the method instead of accessing properties of the returned object directly. If both expansion and projections are required, the provider may choose to return of which in turn returns from its property. Applies the ordering, skip and take on top level query result set before projections were applied Current query expression Top level ordering information Elements to skip Count of elements to return The root where we store information about the shape of projections of the root level. appended with OrderBy/ThenBy, Skip and Top expressions Applies the ordering, skip and take on top level query result set once projections where applied Current query expression Top level ordering information Elements to skip Count of elements to return appended with OrderBy/ThenBy, Skip and Top expressions Applies the skip and take on top level query result set Current query expression Elements to skip Count of elements to return appended with Skip and Top expressions Applies Queryable.OrderBy/ThenBy to Input query Expression representing orderby clause Is this first ordering expression in a list Ordering is ascending or descending Query expression with orderby/thenby appended to it Provider for metadata. Queryable element for results with expanded properties. Wrapper type with expanded properties. Source enumeration with wrapped properties. Initializes a new ExpandedEnumerable instance. Source for enumeration. Gets an enumerator object for results. An enumerator object for results. Gets an enumerator object for results. An enumerator object for results. The type of a single result. The query expression. The query provider - not supported as nobody should call this. Base class for the generic ExpandedEnumerator so that we can easily recognize instances of that class without usage of reflection (used during serialization and thus needs to be as fast as possible). Note that we can't implement the ExpandedEnumerator as non-generic because the V1 version used the inner enumerator as generic and called the MoveNext/Current and so methods on the generic version. We also need the generic version for the IExpandedResult unwrapping to work. Determines if the specified enumerator is the ExpandedWrapper enumerator wrapper or the ProjectedWrapper enumerator wrapper and if so returns the unwrapped inner enumerator. The enumerator to unwrap Unwrapped enumerator if it was wrapped or the original enumerator if now wrapping occured. Virtual method to unwrap the inner enumerator as it's stored in the generic version of this class. The inner enumerator. Use this class to enumerate elements that can be expanded. Wrapper type with expanded properties. Enumerator for wrapper instances. Initializes a new ExpandedEnumerator instance. Source for enumeration. Gets an expanded property for the specified . Name of property to return. The expanded property value with the specified . Moves to the next element. true if an element is available after the move; false otherwise. Resets the enumerator to the beginning of the sequence. Releases resources. Virtual method to unwrap the inner enumerator as it's stored in the generic version of this class. The inner enumerator. Element with expanded properties. Element with expanded properties. Class which represents one projected property. Used as a pair of name and resource property. Name of the property to project The resource property to project. If this field is null, it means we are to project open-type property. The resource type on which the given property is declared. If the given property is an open property, then the declaring type name will be null. Since we allow same instance of resource properties to be added to different resource types, the only way to make sure that the property is unique is to have the declaring type. The resource type for which the given property needs to be projected. The property being projected might not be reachable from the targetResourceType. We create an instance of ProjectedProperty for adding etag properties and properties that have epm mapping. If the etag or epm mapping is a property on derived type, we still pass the target resource type as the base resource type of the set. Later on, because of the TypeAs bug, we need to distinguish between properties that have the type indentifier specified in the uri vs not. In short, if the target resource type is not equal to the base resource type of the set, there is a type identifier specified in the uri, otherwise not. Creates a new instance of the projected property for a given property. The name of the property to project. The to project. For open properties this is null. The resource type for which the property needs to be projected. Resource type on which the property is declared on. This will be null for open properties. Compares two instances for equality. First instance. Second instance. True if the instances are equal, that means if they have the same name and the same resource property. Name of the property to project The resource property to project. If this field is null, it means we are to project open-type property. The resource type for which the property needs to be projected. Use this class to build a tree structure over a list of paths. Expanded projection node for this node. Provider with metadata for operations. All child expand nodes for this segment. Ordering info for this node Is skip token needed for current segment Candidate set of properties to project. We fill this set as we go through all the different ways to determine properties which need to be projected. Once we're done we will move the content of this set to the list and this fix the order of the projected properties. We use a set since we want to speed up the process of finding duplicates as it can happen quite often that we try to add the same property several times. During the phase where we build this set we use this field to mark nodes which require projection. Nodes which have this field null don't require projections and will project the entire resource always. The element type that will be projected from this segment. The model (never wrapped) type to be used in an strongly-typed IEnumerable for this segment. Whether there are any filters within this node. MaxResults are considered filters for processing. Whether this segment represents a single element rather than a collection. Set to true if this node is the root node. Set to true if this expand node and all its children represent a query which could be generated by the V1 version. This is used to generate queires compatible with V1 when the query is V1 compatible. Whether this segment should be projected into an expanded wrapper. Segments require a wrapper because the model doesn't auto-wire up (as in the EDM case), or because they have children with filters (and thus they need to project filtered children), or because they have wrapped children (and thus they need to project the custom projected type). List of all s possibly returned by this segment (before projections). The list is ordered such that if you imagine the tree of inheritance the root is always the first item in the list. The rule is that for each two types A and B, if A is ancestor in the inheritance hierarchy to B, then A goes before B. Types which don't have inheritance relationship (one is not the ancestor of the other) are in undefined order (we don't care). The list represents the entire inheritance hierarchy of types which can appear in the given resource set for this segment. List of properties to be projected on this segment. The list may hold several instances with the same name. In that case it means that there are different properties declared on different types in the inheritance tree which have the same name. Only one of them can be an open property (without the ). We need multiple instances for the same property name in cases where the properties have differnt types. In that case we can't project them onto the same property on the since some providers (for example Linq to Entities) would reject such query (the properties might have different CLR types and the provider might complain that we are projecting differnt types for the same property, although in reality we always project into "object", the provides sometimes don't see that). If a property is to be projected, there's going to be an some instance of which applies to every type the property can be projected on. If there's is no matching instance for a given type in the inheritance hierarchy it means that type can't project that property at all (and we project null of the correct CLR type instead). The order in this list is important. It defines the order in which the properties are projected onto the ProjectedWrapper types. If a given property has index #i in this list it's going to be projected as #ith ProjectedProperty on the ProjectedWrapper. If this field is null it means no projections are defined for this segment and thus the entire resource should be returned from the query. If the field is non-null only the properties listed in it should be projected from the query. We must store a full list of all properties possibly projected on all types in this segment. The reason is so that we can assign them unique indeces (the order of this list). Since after the projection we won't be able to refer to them by names anymore. After the projection we won't know which exact type the resource was so we need a way to refer to the projected property without the knowledge of the exact type. Initalizes a new . Node being described. Provider for expansion flags and metadata. Builds a tree of items and the list of projected properties on them. Expand provider for nodes. The root projection node to start with. Determine if the current Response format needs epm values. The newly create root expand node. Creates children expand nodes for this node. Adds the specified property to the list of projected properties on this node. The to project. The resource type for which the property needs to be projected. The resource type on which the property is declared on. Adds the specified property to the list of projected properties on this node. The name of the property to project. The to project, can be null for open-type properties. The resource type for which the property needs to be projected. The resource type on which the property is declared on. This will be null for open properties. Finds a child with the specified name. The name of the node (navigation property) for which to look. The child or null if none was found. Applies projection segments onto the node creating list of projected properties and types for this node. It calls itself recursively to apply projections to the entire subtree. Determine if the current Response format needs epm values. Assings type information given the specified type. Type expected for enumeration. true if a single result is expected of this node; false otherwise. Builds the projection to apply expansion for the specified . Query to build for. A new query with the expansions performed inside. Returns the index of the projected property. The property to look for. The index of the projected property. This is the index under which the property was projected into the ProjectedWrapper. Creates a LambdaExpression and can be used when the delegate type is not known at compile time. A Type that represents a delegate type. An Expression to set the Body property equal to. An IEnumerable<T> that contains ParameterExpression objects to use to populate the Parameters collection. An object that represents a lambda expression which has the NodeType property equal to Lambda and the Body and Parameters properties set to the specified values. Create the accessor expression for a property (both CLR and late-bound) Expression representing the instance on which to access a property The of the on which to access the property. The to access. If set to true, nulls should be propagated through the property accesses, this means that if the source is null, the result will evaluate to null without accessing the property. If set to false the property is accessed directly. An expression to access a property (singleton or set). The returned expression will always have the CLR type of the property being accessed. Create the accessor expression for an open property Expression representing the instance on which to access a property The name of the property to access. An expression to access a property. This always returns an expression of type System.Object. Creates a expression that binds an expression to the named property. The type to look for the property on. Name of property on the element type. Source expression for property. A expression that binds an expression to the named property. Applies the segment filter to the specified expression. Expression to apply filter on. The expression with the filter applied. Builds the projection for this segment. Expected expression for this segment if it had no filtering or wrapping. The expression for this segment, possibly a filter and/or wrapped version of . Builds projection expression which projects the result as ExpandedWrapper to enable on-demand expansion of navigation properties. Expression which evaluates to the element from which to project. Projection expression which projects the result as ExpandedWrapper. Prepare the binding for resourceType Expression which evaluates to the element from which to project the properties. List of projected properties projected binding expressions Builds projection expression which projects all properties which we need based on active projections for this node. It uses ProjectedWrapper if necessary. Expression which evaluates to the element from which to project the properties. Projection expression which projects all required properties from the . Applies OrderBy/ThenBy and Take on inner segments Input expression Output expression with OrderBy/Take possibly added to it Sets the expanded wrapper element type on this node. Returns the projected wrapper element type on this node. The type of the projected wrapper used for this node. Populate the list of resource types for the given node. Provider with metadata for operations. Type to be projected for this node in the model (possibly wrapped). Ordering information needed for root node The base resource type for this segmenr. All resources reported by this segment will be of this or some of its derived types. Set to true if this expand node and all its children represent a query which could be generated by the V1 version. This is used to generate queires compatible with V1 when the query is V1 compatible. Returns true if this node requires a ExpandedWrapper to be used to represent the result. If both exapnede and projected wrappers are required we return ExpandedWrapper which stores the result element as a ProjectedWrapper. Returns true if this node requires a ProjectedWrapper to be used to represent the result. If the node also requires an ExpandedWrapper then the actuall type fo the result will be the ExpandedWrapper with its ExpandedElement property of type ProjectedWrapper. Returns true if this node requires some kind of wrapper for its result. Returns true if this expansion will need standard paging applied. Expression tree visitor which annotates the tree with s. Given expression is annotated with if it evaluates to an instance of the resource which belongs to the resource set represented by the . For example in query /Customers?$expand=BestFriend all expressions which evaluate to customer.BestFriend will be annotated with the representing the expanded BestFriend nav. property. This visitor doesn't modify the expression tree at all. The parameter expression which is the parameter for the expression tree and evaluates to the resource instances. into which belongs the resource which the evaluates to. The created annotations. Annotations are stored as a dictionary where the expression is the key and the value is the . Note that since this annotation is entirely computed out of the subtree and not from the parents of the expression subtree it is safe to annotate like this. Even if a given expression is referenced multiple times from the same tree its annotation will be the same in all cases. Constructor The parameter expression which evaluates to the resource. The into which the resource from belongs to. Annotates specified expression with the respective s. The expression to annotate. The parameter expression which evaluates to the base resource instance. The which represents the base resource set. Annotations stored as a dictionary. The expression is not modified at all. Visits a conditional node in the expression tree. The conditional expression to process. Possibly new conditional expression with which to replace the in the tree with. This class needs to override this method since it needs to "merge" the annotations from the true and false branches of the conditional expression. It assumes that only one branch will actually have some annotation. UnaryExpression visit method The UnaryExpression expression to visit The visited UnaryExpression expression This method simply propagates the annotation from the operand of the unary expression to the unary expression itself. ParameterExpression visit method The ParameterExpression expression to visit The visited ParameterExpression expression Dervied class will override them method to process any property accesses found in the tree. The name of the property being accessed. The expression on which the property is being accessed. The implementation may choose to return a different expression through this ref parameter. If the method returns true, the is null and the method changed this parameter, the caller will replace the operand in the original property access with the new expression provided in this parameter. The way the property is accessed and its name remains the same. The entire expression of the property access. The implementation may choose to return a different expression through this ref parameter. If the method returns true and this parameter is not null the caller will replace the entire property access expression with the new one passed in this parameter. If the method returns false it means that it is not interested in this property access, and the processing of the tree will continue by examining the children of the property access expression. If the method returns true the caller looks at the returned value of . If it is not-null it will replace the entire property access expression with it. If it's null it will just replace the operand of the property access with the . If the implementation wants to skip this property access without modification it should return true and not modify the ref parameters. If the method returns true the caller will not continue walking the children of the property access expression. It's the responsibility of the implementation to do so if it requires such functionality. Helper method to determine annotation for a given expression. Expression to determine annotation for. Annotation for the or null if no annotation was found. Helper method to set an annotation for a given expression. Expression to set an annotation on. The annotation to set. Expression tree visitor which finds all property accesses and marks the affected properties for projection. The visitor doesn't change the expression tree at all. Visitor recognizes all ways a WCF Data Services uses to access properties. Annotations for the specified expression tree. Constructor Annotation to use. Inspects the specified using the and adds all accessed properties to the list of candidates for projection on their respective s. The expression to inspect. Annotation for the computed as a result of . Derived class will override them method to process any property accesses found in the tree. The name of the property being accessed. The expression on which the property is being accessed. The implementation may choose to return a different expression through this ref parameter. If the method returns true, the is null and the method changed this parameter, the caller will replace the operand in the original property access with the new expression provided in this parameter. The way the property is accessed and its name remains the same. The entire expression of the property access. The implementation may choose to return a different expression through this ref parameter. If the method returns true and this parameter is not null the caller will replace the entire property access expression with the new one passed in this parameter. If the method returns false it means that it is not interested in this property access, and the processing of the tree will continue by examining the children of the property access expression. If the method returns true the caller looks at the returned value of . If it is not-null it will replace the entire property access expression with it. If it's null it will just replace the operand of the property access with the . If the implementation wants to skip this property access without modification it should return true and not modify the ref parameters. If the method returns true the caller will not continue walking the children of the property access expression. It's the responsibility of the implementation to do so if it requires such functionality. Provides a reflection-based provider implementation. Name for the 'StoreGeneratedPattern' custom annotation once it has been loaded into a ResourceProperty EF provider behavior List of objects that we need to be replaced. The key value indicates the current instance that will be replaced during SaveChanges. All the property changes are expected to happen on the value instance. At the time of SaveChanges, all the changes applied to the Value instance are then applied to the instance present in Key and then it is saved. Since EF will always return the same reference for same key value by looking up the first level cache, we can assume reference equality for the objects thus obtained. List of service actions to be invoked during SaveChanges(). List of cspace types for which ospace metadata couldn't be found. Reference to the ObjectContext to use for operations Method to use to save changes to the context Initializes a new System.Data.Services.ObjectContextServiceProvider instance. instance of the data service. data source instance. Gets the ResourceAssociationSet instance when given the source association end. Resource set of the source association end. Resource type of the source association end. Resource property of the source association end. ResourceAssociationSet instance. Returns the IQueryable that represents the container. resource set representing the entity set. An IQueryable that represents the container; null if there is no container for the specified name. Returns the collection of open properties name and value for the given resource instance. instance of the resource. Returns the collection of open properties name and value for the given resource instance. Currently not supported for ObjectContext provider. Gets the value of the open property. instance of the resource type. name of the property. the value of the open property. Currently this is not supported for ObjectContext providers. Creates the resource of the given type and belonging to the given container container name to which the resource needs to be added full type name i.e. Namespace qualified type name of the resource object representing a resource of given type and belonging to the given container Gets the resource of the given type that the query points to query pointing to a particular resource full type name i.e. Namespace qualified type name of the resource object representing a resource of given type and as referenced by the query Resets the value of the given resource to its default value resource whose value needs to be reset same resource with its value reset Sets the value of the given property on the target object target object which defines the property name of the property whose value needs to be updated value of the property Gets the value of the given property on the target object target object which defines the property name of the property whose value needs to be updated the value of the property for the given target resource Sets the value of the given reference property on the target object target object which defines the property name of the property whose value needs to be updated value of the property Adds the given value to the collection target object which defines the property name of the property whose value needs to be updated value of the property which needs to be added Removes the given value from the collection target object which defines the property name of the property whose value needs to be updated value of the property which needs to be removed Delete the given resource resource that needs to be deleted Saves all the pending changes made till now Returns the actual instance of the resource represented by the given resource object object representing the resource whose instance needs to be fetched The actual instance of the resource represented by the given resource object Revert all the pending changes. Get the list of etag property names given the entity set name and the instance of the resource name of the entity set Type of the resource whose etag properties need to be fetched list of etag property names Return the list of custom annotation for the entity container with the given name. Name of the EntityContainer. Return the list of custom annotation for the entity container with the given name. Set the etag values for the given resource. resource for which etag values need to be set. true if we need to compare the property values for equality. If false, then we need to compare values for non-equality. list of the etag property names, along with their values. Queues up the to be invoked during IUpdatable.SaveChanges(). The invokable instance whose Invoke() method will be called during IUpdatable.SaveChanges(). Populates the member metadata for the given type Instance of ResourceTypeCacheItem containing the ResourceType and its metadata. workspace containing the metadata information Instance of ProviderMetadataCacheItem. Map of primitive types to use when building member metadata. Gets the CLR type mapped to the specified C-Space type. Workspace in which the type is defined. C-Space type whose matching clr type needs to be looked up. The resolved for the given . Checks that the metadata model is consistent. Populates metadata from the given object context Instance of ProviderMetadataCacheItem in which metadata needs to be populated. Populate types for metadata specified by the provider list of types specified by the provider Instance of ProviderMetadataCacheItem. Populate metadata for the given clr type. type whose metadata needs to be loaded. Instance of ProviderMetadataCacheItem. resource type containing metadata for the given clr type. Returns the resource type for the corresponding clr type. clrType whose corresponding resource type needs to be returned Returns the resource type Checks that all navigation properties are bound to some association set for every entity set. Instance of the data source for the provider. Gets all instance that may hold an entity of type . Workspace with metadata. Entity type to get entity sets for. An enumeration of instances that can hold . Gets all entity sets that participate as members for the specified . Workspace with metadata. Type of assocation to check. Member of association to check. All instances that are are on the role for some association of . Reads the HasStream attribute from the specified . Type to read attribute from. True if HasStream="true" stream property is defined for the entity type. Sets the MIME type, if specified for the specified member. resource property whose mime type needs to be updated. C-Space member for which we need to find the C-Space mime type attribute. Checks whether may be assigned to . Type to check assignment to. Type to check assignment from. true if an instance of can be assigned to a variable of ; false otherwise. Populates the metadata for the given type and its base type metadata workspace containing all the metadata information type whose metadata needs to be populated Instance of ProviderMetadataCacheItem. returns the resource type corresponding to the given edmType Creates a new instance of resource type given the cspace structural type and mapping clr type. cspace structural type. mapping clr type for the given structural type. the base resource type for the given resource type. Instance of ProviderMetadataCacheItem. the new resource type instance created for the given cspace type. Returns the entity set name for the given entity set. If this entity set belongs to the default container name, then it returns the entity set name, otherwise qualifies it with the entitycontainer name entity set name entity container name true if the given entity set belongs to the default entity container returns the entity set name Returns the escaped entity set name for the given entity set. If this entity set belongs to the default container name, then it returns the escaped entity set name, otherwise it escapes both the container and set name qualified entity set name whose name needs to be escaped returns the escaped entityset name Initializes metadata for the given object context. Instance of data source to use if pure static analysis isn't possible. assembly whose metadata needs to be loaded. Create a new instance of the given clrtype using ObjectContext.CreateObject method current object context instance. clrType whose instance needs to be created. the instance returned by ObjectContext. Checks if the given association is a FK association with cardinality 1 to 1 or 0..1 to 1 metadata for the association. Returns true if the given association is a FK association with cardinality 1 to 1 or 0..1 to 1. Returns the entity set name for the given object state entry. object state entry for the object whose entity set name needs to be retreived. default container name. entity set name for the given entity entry. Apply changes from the newEntity to the original entity ObjectContext instance. original entity which is tracked by the context. newEntity which contains all the changed values. Populate annotations from the list of the metadata properties. list of metadata properties. method for adding the annotation. Populate the annotations from the list of facets. ResourceProperty instance whose annotation needs to be populated. List of facets. True if the nullable annotation needs to be ignored. Return the string for the given enum RelationshipMultiplicity value. RelationshipMultiplicity value. Return the string for the given enum RelationshipMultiplicity value. Populate ResourceAssociationSetEnd from the AssociationSetEnd instance. Instance of AssociationSetEnd. ResourceSet to which the type referred by the end belongs to. ResourceType referred by the end. ResourceProperty that takes part in the association. An instance of ResourceAssociationSetEnd. Populate the ResourceAssociationTypeEnd from the AssociationEndMember instance. Instance of AssociationEndMember. ResourceType instance which the end refers to. ResourceProperty instance. An instance of ResourceAssociationTypeEnd. Populate the ResourceAssociationType from the AssociationType instance. AssociationType instance. ResourceAssociationTypeEnd instance. ResourceAssociationTypeEnd instance. An instance of ResourceAssociationType. Populate the ResourceReferentialConstraint instance from the ReferentialConstraint instance. ResourceAssociationType instance. ReferentialConstraint instance. Creates a new exception to indicate BadRequest error. Plain text error message for this exception. Inner Exception. A new exception to indicate a bad request error. Given a resource type, builds the EntityPropertyMappingInfo for each EntityPropertyMappingAttribute on it The EFx metadata workspace to which the resource type belongs Resouce type for which EntityPropertyMappingAttribute discovery is happening Given a resource type and its resource proeperty builds the EntityPropertyMappingInfo for the EntityPropertyMappingAttribute on it EPM information for current property ResourceType on which epm information is declared. Resource property for which to get the information Obtains the ResourceProperty corresponding to a given sourcePath Resource type in which to look for property Source Path ResourceProperty object corresponding to the property given through source path Returns a sequence of attributes corresponding to a complex type with recursion Complex typed property Source path Target path Namespace prefix Namespace Uri KeepInContent setting Sequence of entity property mapping information for complex type properties Get the entity set metadata object given the qualified entity set name qualified entity set name i.e. if the entity set belongs to entity container other than the default one, then the entity container name should be part of the qualified name the entity set metadata object Return the set of IL instructions for getting the IQueryable instance for the given ResourceSet. ResourceSet instance. Func to invoke to get IQueryable for the given ResourceSet. Update the relationship for the given entity. source entity. navigation property which needs to get updated. target entity - the other end of the relationship. null for reference properties, true if relationship needs to be added for collection properties, else false. Saves changes on the ObjectContext using the provider's Func Gets the constructor delegate for the given ResourceType from the cache. ResourceType instance. the constructor delegate for the given ResourceType from the cache. Sets the value of the property. The object whose property needs to be set. ResourceTypeCacheItem containing the ResourceType and its metadata representing the instance parameter. new value for the property. metadata for the property to be set. Gets a value indicating whether null propagation is required in expression trees. Namespace name for the EDM container. Name of the EDM container Return the schema version for the EF provider. Instance of provider behavior that defines the assumptions service should make about the provider. Strongly-types instance being reflected upon. Target type for the data provider Class for storing metadata for a given ResourceProperty. >Whether the property value can be null or not. >Whether the property value is store generated or not. Creates a new instance of ResourcePropertyCacheItem. PropertyInfo instance for the given ResourceProperty. IProviderMember which wraps the IEdmMember instance. Returns whether or not the property's custom annotations indicate that it is nullable List of facets. True if the 'Nullable' annotation is absent or present with the value 'true'. Otherwise returns false. Returns whether or not the property's custom annotations indicate that it is store-generated list of metadata properties. True if the 'StoreGeneratedPattern' annotation is present with either the value 'Identity' or 'Computed', otherwise false Returns true if the property value can be null, otherwise false. Returns true if the property value is store generated, otherwise false. Provides an encapsulation of the Entity Framework StructuralType class. StructuralType being encapsulated. Creates a new encapsulations of the specified type. StructuralType to encapsulate. Returns the members declared on this type only, not including any inherited members. Name of the type without its namespace Provides an encapsulation of the Entity Framework EdmMember class. EdmMember that is encapsulated by this class. Creates a new encapsulation of the specified EdmMember. Member being encapsulated. BuiltInTypeKind for the member's type. Name of the member without its namespace. True if this member is a key on it's declaring type, otherwise false. EDM name for the member's type. MimeType for the member. Returns the entity type of the items in the collection if this member is a collection type, otherwise null. List of metadata properties of the member. List of facets of the member. EdmType for the member. Provides an encapsulation of the Entity Framework MetadataWorkspace class MetadataWorkspace being encapsulated. Creates a new encapsulation of the specified workspace. MetadataWorkspace to encapsulate. Gets the CSpace type with the specified type name. Expected to be used for entities and complex types only. CSpace type name used to find the type. IType encapsulation of the StructuralType from the metadata workspace. Gets the CLR type for the specified StructuralType. StructuralType used to find the CLR type. CLR type equivalent for Provides a reflection-based provider implementation. EF provider behavior Initializes a new System.Data.Services.ReflectionServiceProvider instance. data service instance. data source instance. Gets the ResourceAssociationSet instance when given the source association end. Resource set of the source association end. Resource type of the source association end. Resource property of the source association end. ResourceAssociationSet instance. Returns the IQueryable that represents the container. resource set representing the entity set. An IQueryable that represents the container; null if there is no container for the specified name. Returns the collection of open properties name and value for the given resource instance. instance of the resource. Returns the collection of open properties name and value for the given resource instance. Currently not supported for Reflection provider. Gets the value of the open property. instance of the resource type. name of the property. the value of the open property. Currently this is not supported for Reflection provider. Checks whether the given property is a key property. property to check returns the key kind of the property, based on the heuristic it matches true if this is a key property, else returns false Populates the metadata for this provider. Instance of ProviderMetadataCacheItem in which metadata needs to be populated. Populate types for metadata specified by the provider list of types specified by the provider Instance of ProviderMetadataCacheItem. Populate metadata for the given clr type. type whose metadata needs to be loaded. Instance of ProviderMetadataCacheItem. resource type containing metadata for the given clr type. Checks whether the specified type is a complex type. Type to check. true if the specified type is a complex type; false otherwise. Note that resources are not distinguished from complex types. Checks whether there is a key defined for the given type. type to check Whether is being considered as a possible entity type. returns true if there are one or key properties present else returns false Populates the metadata for the given unvisited types and all the associated types with this type Instance of ProviderMetadataCacheItem. list of unvisited type Walks through the list of ancestors and finds the root base type and collects metadata for the entire chain of ancestors type whose ancestors metadata needs to be populated Instance of ProviderMetadataCacheItem. list of unvisited types Whether is a candidate to be an entity type. return true if this given type is a entity type, otherwise returns false Populates the metadata for the properties of the given resource type resource type whose properties metadata needs to be populated Instance of ProviderMetadataCacheItem. list of unvisited type If the given type is a entity or complex type, it returns the resource type corresponding to the given type clr type Instance of ProviderMetadataCacheItem. list of unvisited types resource type corresponding to the given clr type, if the clr type is entity or complex Get the resource set for the given clr type. clr type for which resource set name needs to be returned Available entity sets to consider. The container for its type, null if not found. Find out all the derived types in the list of assemblies and then populate metadata for those types Instance of ProviderMetadataCacheItem. list of unvisited types Loads the etag properties for the given resource type resource type whose etag property names need to be loaded. the list of properties that form the etag for the given resource type. returns the new resource type instance backing clr type for the resource. kind of the resource. base type of the resource. Instance of ProviderMetadataCacheItem. returns a new instance of the resource type containing all the metadata. Checks whether the given type is a generic type with a generic parameter. type which needs to be checked. Returns true, if the is generic and has generic parameters. Otherwise returns false. Given a resource type, builds the EntityPropertyMappingInfo for each EntityPropertyMappingAttribute on it Resouce type for which EntityPropertyMappingAttribute discovery is happening Return the set of IL instructions for getting the IQueryable instance for the given ResourceSet. ResourceSet instance. Func to invoke to get IQueryable for the given ResourceSet. Gets a value indicating whether null propagation is required in expression trees. Namespace name for the EDM container. Name of the EDM container Instance of provider behavior that defines the assumptions service should make about the provider. Target type for the data provider Use this class to describe a property on a resource. The name of this property. The kind of resource Type that this property refers to. For e.g. for collection properties, this would return the resource type, and not the collection type that this property refers to. The kind of property this is in relation to the resource. Is true, if this property is a actual clr property on the property type. In this case, astoria service will do reflection over the property type and get/set value for this property. False means that astoria service needs to go through the IDataServiceQueryProvider contract to get/set value for this provider. Is true, if the resource property is set to readonly i.e. fully initialized and validated. No more changes can be made, once the resource property is set to readonly. MIME type for the property, if it's a primitive value. list of custom annotations that needs to be flowed via $metadata endpoint. Initializes a new for an open property. Property name for the property as string. . The of the resource to which the property refers. Sets the resource property to read-only. Once this method is called, no more changes can be made to resource property. Add the given annotation to the list of annotations that needs to flowed via the $metadata endpoint NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. return true if this property is of the given kind flag which needs to be checked on the current property kind true if the current property is of the given kind return true if the given property kind is of the given kind kind of the property flag which needs to be checked on property kind true if the kind flag is set on the given property kind Validates that the given property kind is valid property kind to check name of the parameter Validate the parameters of the resource property constructor. kind of the resource property. resource type that this property refers to. Checks if the resource type is sealed. If not, it throws an InvalidOperationException. Gets a value that indicates whether this property can be accessed through reflection on the declaring resource instance type. true when the property can be accessed through reflection; otherwise false. A 'true' value here typically indicates astoria service will use reflection to get the property info on the declaring ResourceType.InstanceType. 'false' means that astoria service will go through IDataServiceQueryProvider interface to get/set this property's value. Gets the type of the resource property. The of the resource property. For collection, this will return the element of the collection, and not the collection. Gets the name of the resource property. The name of the resource property as string. Gets or sets MIME type for the property. String value that indicates MIME type. Gets the kind of the resource property with regard to the resource. A value. Gets or sets custom state information about a resource property that is defined by the developer. State information. Gets a Boolean value that indicates whether the property is read-only. True if the property is read-only. The kind of type this property has in relation to the data service. The type of the property. Returns the list of custom annotations defined on this property. Enumeration for the kinds of property a resource can have. A primitive type property. A property that is part of the key. A complex (compound) property. A reference to another resource. A reference to a resource set. Whether this property is a etag property. A collection of primitive or complex types. A Named Resource Stream Enumeration for the kind of resource key kind if the key property was attributed If the key property name was equal to TypeName+ID If the key property name was equal to ID Enumeration for the kind of resource types Resource type with keys. Resource type without keys. A resource type without keys and with no properties. Resource type representing a collection property of primitive or complex types. Resource type representing a collection of entities. Use this type to represent a parameter on a service operation. Empty parameter collection. Creates a new instance of . Name of parameter. Data type of parameter. Use this type to describe the kind of results returned by a service operation. A single direct value which cannot be further composed. An enumeration of values which cannot be further composed. A queryable object which returns multiple elements. A queryable object which returns a single element. No result return. Provides support for serializing responses in binary format. The file histroy should show a BinaryExceptionTextWriter which is no longer used. Stream to which output is sent. Initializes a new for the specified stream. Stream to which output should be sent. Handles the complete serialization for the specified content. Single Content to write.. should be a byte array. Handles the complete serialization for the specified stream. Input stream to write out. Buffer size to use during copying. Provides support for serializing responses in CSDL format. The set of schema validation rules that we exclude from the default rule set. The set of schema validation rules that we added to the default rule set. The fixed EDMX version used by Astoria. Astoria has no reason to update the version number since it breaks all the clients that read it including the Add Service Reference code in VS. See bug 319354 for more info. Validates the given . The to check. The EDM version to be used. Prepares the service's model for serialization during a $metadata request by adding versioning annotations and running validation. The service's provider The service's configuration Returns the prepared model. This class serializes non-entity resources (primitive, complex types, collection types, links, etc). Abstract base class for all serializers. Maximum recursion limit on serializers. These query parameters can be copied for each next page link. Don't need to copy $skiptoken, $skip and $top because they are calculated every time. Base URI from which resources should be resolved. Data provider from which metadata should be gathered. Data provider from which metadata should be gathered. Description for the requested results. The payload metadata parameter interpreter. The accessor to use for payload properties which may be left out of the response payload. Collection of complex types, used for cycle detection. Depth of recursion. information for each segment that is encountered during serialization. Current skip token object for custom paging. Initializes a new base Serializer, ready to write out a description. Description for the requested results. Base URI from which resources should be resolved. Service with configuration and provider from which metadata should be gathered. HTTP ETag header value. Starts enumeration of a collection property value. The value of the collection property. (nulls are handled by this method) The name of the property being serialized. (for error message purposes). IEnumerable to enumerate over to get the items of the collection Property. Returns the value of the primitive property. Value of the primitive property. Returns the value of the primitive property. Flushes the content of the underlying writers Handles the complete serialization for the specified . Query results to enumerate. should correspond to the RequestQuery of the RequestDescription object passed while constructing this serializer We allow the results to be passed in to let the query be executed earlier than at result-writing time, which helps detect data and query errors where they can be better handled. Gets the expanded element for the specified expanded result. The expanded result to process. The expanded element. Gets the expandable value for the specified object. Expanded properties for the result, possibly null. Object with value to retrieve. Property for which value will be retrieved. expanded node if present for the current navigation property whose value needs to be returned. The property value. Writes a single top-level element. Expanded properties for the result. Element to write, possibly null. Writes multiple top-level elements, possibly none. Expanded properties for the result. Result elements. Adds the given object instance to complex type collection instance to be added true, if it got added successfully Gets the skip token object contained in the expanded result for standard paging. Current expanded result. Skip token object if any. Obtains the URI for the link for next page in string format Last object serialized to be used for generating $skiptoken The of the $skiptoken property of object corresponding to last serialized object Absolute response URI URI for the link for next page Is next page link needs to be appended to the feed Current result enumerator. true if the feed must have a next page link Increments the result count for the current segment, throws if exceeds the limit. Pushes a segment from the stack of names being written. Property to push. resource type of the current entity which is being serialized. expanded node the given navigation property. Calls to this method should be balanced with calls to PopSegmentName. true if a segment was pushed, false otherwise Pushes a segment for the root of the tree being written out. Calls to this method should be balanced with calls to PopSegmentName. true if the segment was pushed, false otherwise Pops a segment name from the stack of names being written. Is a pop required. Only true if last push was successful Calls to this method should be balanced with previous calls to PushSegmentName. Marks the fact that a recursive method was entered, and checks that the depth is allowed. Marks the fact that a recursive method is leaving. Remove the given object instance from the complex type collection instance to be removed Checks whether the property with the specified name should be expanded in-line. Property which needs to be checked for expansion. resource type of the entity which is current getting serialized. expandedNode for the given navigation property, if found. true if the segment should be expanded; false otherwise. Returns a list of projection segments defined for the current segment. List of describing projections for the current segment. If this method returns null it means no projections are to be applied and the entire resource for the current segment should be serialized. If it returns non-null only the properties described by the returned projection segments should be serialized. Returns the ETag value from the host response header resource whose etag value gets to be returned ResourceType instance containing metadata about . returns the etag value for the given resource Returns the instance of ResourcePropertyInfo, which keeps track of whether we need to do the expand for the given navigation property. Expanded properties for the result. Resource or complex object with properties to write out. resourceType containing metadata about the current custom object navigation property in question. an instance of ResourcePropertyInfo, which keeps all the information about the given navigation property. Returns the property value in terms of OData object model (ODataPrimitiveValue, ODataNullValue, ODataComplexValue or ODataCollectionValue instance) for the given property value. Name of the property. Type of the property. Value of the property. True if the property is an open property, otherwise false. Returns the property value in terms of OData object model (CLR type, ODataComplexValue or ODataCollectionValue instance) for the given property value. Returns the ODataComplexValue instance for the given property value. Name of the property. Value of the property. Returns the ODataComplexValue instance for the given property value. Returns the ODataCollectionValue instance for the given property value. Name of the property. Type of the property. Value of the property. Returns the ODataCollectionValue instance for the given property value. Finds the node which describes the current segment. The which describes the current segment, or null if no such node is available. Converts the given IEnumerable into IEnumerable Type parameter. IEnumerable which contains the list of the objects that needs to be converted. Delegate to use to convert the value. An instance of IEnumerable which contains the converted values. Helper method to append a path to the $expand or $select path list. The to which to append the path. The segments of the path up to the last segment. The last segment of the path. Returns the ODataValue representation of the given primitive value. The type of the property. The primitive value. An ODataNullValue or ODataPrimitiveValue representing the given value. Returns all the properties of the given resource instance. Resource instance whose properties needs to be written out. ResourceType containing metadata about the resource instance. Name of the parent property for which the properties are returned. Returns all the properties of the given resource instance. Builds the string corresponding to query parameters for top level results to be put in next page link. StringBuilder which has the query parameters in the URI query parameter format. Recursive method which builds the $expand and $select paths for the specified node. List of path segments which lead up to this node. So for example if the specified node is Orders/OrderDetails the list will contains two strings "Orders" and "OrderDetails". The result to which the projection paths are appended as a comma separated list. The result to which the expansion paths are appended as a comma separated list. The node to inspect. Out parameter which is set to true if there were some explicit projections on the inspected node. Our parameter which is set to true if there were some expansions on the inspected node. Builds the string corresponding to query parameters for top level results to be put in next page link. StringBuilder which has the query parameters in the URI query parameter format. Pushes a segment from the stack of names being written. Container to push (possibly null). ExpandedProjectionNode for the given segment. Calls to this method should be balanced with calls to PopSegmentName. true if a segment was push, false otherwise Obtains the $top query parameter value. Integer value for $top or null otherwise. Container for the resource being serialized (possibly null). Is current container the root container. Gets the Data provider from which metadata should be gathered. Gets the Data service from which metadata should be gathered. Gets the absolute URI to the service. Gets the RequestDescription for the request that is getting serialized. Are we using custom paging? The payload metadata parameter interpreter. Gets the accessor to use for payload properties which may be left out of the response payload. Stores the resource property, its value and a flag which indicates whether this is a open property or not. Creates a new instance of ResourcePropertyInfo. resource property instance. value for the resource property. expanded node for the given property. whether the given property needs to be expanded or not. an instance of resourcePropertyInfo, containing all information about serializing the given navigation property. Returns the resource property. Returns the value of the resource property. returns true, if the given property needs to be expanded. Expanded node for the given navigation property. Class to keep track of each segment that is encountered during serialization. Resolved segment containers. Result counts for segments. list of expandedProjectionNodes for segments. Initializes a new instance of SegmentInfo class Adds a new segment with the given name and set to the list of segments resource set to which the given segment belongs to. ExpandedProjectionNode for the current segment. returns the name of the segment at the given index. index of the segment whose name needs to returned. name of the segment at the given index. Pops the most recent segment returns the number of segments. returns the current resource set i.e. the resource set for the most recent segment encountered. returns the projection node for the current segment. returns the result count of the current segment i.e. the result set of the most recent segment encountered. Builds the $skiptoken=[value,value] representation for appending to the next page link URI. Skip token string representation. Constructor. Returns the string representation for $skiptoken query parameter. String representation for $skiptoken query parameter. Derived classes override this to provide the collection of values for skip token. Array of primitive values that comprise the skip token. Obtains the skip token from IExpandedResult values. IExpandedResult to lookup for skip token values. Number of values in skip token. Constructor. IExpandedResult to lookup for skip token values. Number of values in skip token. Obtains skip token values by looking up IExpandedResult. Array of primitive values that comprise the skip token. Obtains the skip token by reading properties directly from an object. Object to read skip token values from. Collection of properties that comprise the skip token. Current provider. Constructor. Object to read skip token values from. Current provider. Collection of properties that comprise the skip token. Obtains skip token values by reading properties directly from the last object. Array of primitive values that comprise the skip token. Provides the skip token obtained from the custom paging provider. Skip token obtained from custom paging provider. Constructor. Skip token obtained from custom paging provider. Provides the skip token values that were obtained from custom paging provider. Array of primitive values that comprise the skip token. ODataMessageWriter instance which needs to be used to write the response. Collection writer used to write out collection of entities/elements. Initializes a new NonEntitySerializer instance. Description of request. Base URI from which resources should be resolved. Service with configuration and provider from which metadata should be gathered. ODataMessageWriter instance which needs to be used to write the response. Flushes the content of the underlying writers Writes a single top-level element. Expandd results on the specified . Element to write, possibly null. Writes multiple top-level elements, possibly none. Expanded results for elements. Enumerator for elements to write. Write out the uri for the given element element whose uri needs to be written out. Write out the uri for the given elements. Elements whose uri need to be written out. Return the collection of links as ODataEntityReferenceLink instances Elements whose uri need to be written out. LinkCollection instance which represents the collection getting written out. Return the collection of links as ODataEntityReferenceLink instances. Return the canonical uri (the edit link) of the element. Element whose canonical uri need to be returned. Return the canonical uri of the element. Computes the container name for the payload to write. The container name to use for writing. Action and function names can be fully-qualified in the URI but must only use their local name in response payloads (since we treat '.', ':', '@' as reserved characters for property names and use them as an extension mechanism). Get the edm property which is the target property for this request. an IEdmProperty which is the target property for this request. Get the parent type of the target property. IEdmStructuredType which is the parent type of the target property. Get the entitySet of a link request. IEdmEntitySet of the link. Serializer for writing service document format. ODataMessageWriter instance which needs to be used for writing out the response payload. Creates a new instance of ServiceDocumentSerializer. ODataMessageWriter instance to be used for writing out the response payload. Writes the Service Document to the output stream. DataServiceProviderWrapper instance. Serializes results into the given format using the given message writer. ODataMessageWriter instance which needs to be used to write the response. The content format. ODataWriter instance of write the feed/entry response. Storage for a lazily-created operation serializer. Initializes a new EntitySerializer instance. Request description. Absolute URI to the service entry point. Service with configuration and provider from which metadata should be gathered. HTTP ETag header value. ODataMessageWriter instance which needs to be used to write the response. The content format. Flushes the content of the underlying writers Writes a single top-level element. Expanded properties for the result. Element to write, possibly null. Writes multiple top-level elements, possibly none. Expanded properties for the result. Enumerator for elements to write. Gets the association link URL. The entity to serialize. The navigation property. The association link url. Creates the association link for the given navigation property. Entity that is currently being serialized. Navigation property whose association link needs to be returned. Uri representing the association link for the navigation property. Write the entry element. Expanded result provider for the specified . Element representing the entry element. true if the resource instance being serialized is inside a feed; false otherwise. Expected type of the entry element. Get the stream reference value for media resource (the default stream of an entity). Entity that is currently being serialized. The title for the element being written. An instance of ODataStreamReferenceValue containing the metadata about the media resource. Get the ODataStreamReferenceValue instance containing the metadata for named stream property. Entity that is currently being serialized. Named stream property for which the link element needs to be written. An instance of ODataStreamReferenceValue containing all the metadata about the named stream property. Writes the feed element for the atom payload. Expanded properties for the result. Collection of entries in the feed element. ExpectedType of the elements in the collection. Title of the feed element. Callback to get the relative uri of the feed. Callback to get the absolute uri of the feed. True if the feed is the top level feed, otherwise false for the inner expanded feed. Gets properties of the given entity type instance. Entity that is currently being serialized. List of all the properties that are being projected for the resource type, or null if no projections are applied. The list must be filtered to only nodes which apply to the current resource type. The list of properties for the specified entity. Gets association links of the entity specified by its type. Entity that is currently being serialized. List of all the properties that are being projected for the resource type, or null if no projections are applied. The list must be filtered to only nodes which apply to the current resource type. The list of association links for the specified entity or null if there are no association links to be written. Returns an IEnumerable of ODataProperty instance for all structural properties in the current resource type and populates the navigation property information along with association links. Entity that is currently being serialized. Returns an IEnumerable of ODataProperty instance for all structural properties in the current resource type.. Returns an IEnumerable of ODataProperty instance for all projected properties in the and populates the navigation property information along with association links. Entity that is currently being serialized. List of all the properties that are being projected for the resource type, or null if no projections are applied. The list must be filtered to only nodes which apply to the current resource type. Returns an IEnumerable of ODataProperty instance for all structural properties in the current resource type. Writes all the navigation properties of the specified entity type. Expanded properties for the result. Entity that is currently being serialized. true if the resource instance being serialized is inside a feed; false otherwise. List of all the properties that are being projected for the resource type, or null if no projections are applied. The list must be filtered to only nodes which apply to the current resource type. Creates the navigation link for the given navigation property. Entity that is currently being serialized. The metadata for the navigation property. The navigation link for the given property. Gets ODataProperty for the given . Entity that is currently being serialized. ResourceProperty instance in question. A instance of ODataProperty for the given . Returns the instance of ODataProperty with the given name and property value. Name of the property. Value of the property. An instance of ODataProperty for the given property. Tries to build the set of to be advertised for the given resource. Entity that is currently being serialized. true if the resource instance being serialized is inside a feed; false otherwise. The actions to advertise. Whether any actions should be advertised. Creates an ODataWriter for writing an entry or a feed. true when writing a feed; false when writing an entry. The ODataWriter to use for writing the feed or entry. Wraps the entity in a structure which tracks its type and other information about it. The entity to wrap. The type of the entity. A structure containing the entity and some other information about it. Gets the operation serializer to use for actions and functions. Provides support for serializing responses in text format. Writer to which output is sent. Initializes a new for writing the response. ODataMessageWriter instance which needs to be used to write the response. Handles the complete serialization for the specified content. Single Content to write.. should be a byte array. Mapping between primitive CLR types, EDM type names, and ResourceTypes Set of ResourceTypes for this instance of the map. Set of ResourceTypes that can be inherted. List of primitive types supported by WCF Data Services and their corresponding EDM names. List of primitive type that can be derived from. Mapping between primitive CLR types, EDM type names, and ResourceTypes. Creates a new instance of the type map using the set of all primitive types supported by WCF Data Services. Creates a new instance of the type map using the specified set of types. Primitive CLR type-to-string mapping information to use to build the type map. Returns the primitive ResourceType for the specified CLR type. CLR type to use for lookup. Primitive ResourceType that maps to or null if the type is not mapped. Returns the primitive ResourceType for the specified EDM type name. Fully-qualified EDM type name to use for lookup. Primitive ResourceType that maps to or null if the type is not mapped. Whether or not the specified CLR type maps to a primitive ResourceType. CLR type to use for lookup True if maps to a primitive ResourceType, otherwise false. Mapping between primitive CLR types, EDM type names, and ResourceTypes. Returns all ResourceTypes for this type map. An implementation backed by an IDSMP metadata provider. Default nullability for entity types. Default nullability for V3 primitive or complex collection property types. Default nullability for V3 primitive or complex collection property item types. Default nullability for collection types used for collection navigation properties, and other collections returned from service operations. Data service metadata provider instance. The stream provider wrapper instance. The action provider wrapper instance. The annotations manager. Referenced core model. Referenced models. The cache of all the schema types. The schema type cache contains the entity types and complex types of the schema. Functions are part of the schema but currently not supported (outside the built-in EDM library functions). The cache of types that derive directly from a given base type. The cache of all the collection types. The cache of all the entity containers. The entity container cache contains the entity containers with the entity sets, association sets and function imports of the model. The cache of all the primitive or complex collection types. The resource types in the cache are retrieved from the data service provider wrapper which ensures that they are atomized. The cache of all the collection types used for collection navigation properties, and other collections returned from service operations. The resource types in the cache are retrieved from the data service provider wrapper which ensures that they are atomized. Cache of association set names by key This allows detection of some error conditions, as well as allows us to skip fixing up a navigation property if its partner has been fixed up already. The state of the metadata cache. This field indicates what parts of the metadata have been fully cached. The state of the current metadata materialization (what metadata is currently being materialized). This is used to track that only methods are called that are expected in a given materialization state. The current mode in which the model is being used. Constructs a which wraps the given instance. instance. The stream provider wrapper instance. The action provider wrapper instance. Searches for an entity container with the given name in this model and returns null if no such entity container exists. The name of the entity container being found. The requested entity container, or null if no such entity container exists. Materialization state: there is currently no scenario that would call this method (it is needed as part of the interface implementation). We don't require a materialization state. Cache state: 'EntityContainers' after the method returned. Searches for a schema type with the given name in this model and returns null if no such schema element exists. The qualified name of the schema element being found. The requested schema element, or null if no such schema element exists. This method only supports by-name lookup for entity types, complex types and primitive types. By-name lookup for association types is not supported. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Searches for functions with the given name in this model and returns an empty enumerable if no such function exists. The qualified name of the function being found. A set functions sharing the specified qualified name, or an empty enumerable if no such function exists. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Searches for a value term with the given name in this model and returns null if no such value term exists. The qualified name of the value term being found. The requested value term, or null if no such value term exists. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Searches for vocabulary annotations specified by this model or a referenced model for a given element. The annotated element. The vocabulary annotations for the element. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Finds a list of types that derive directly from the supplied type. The base type that derived types are being searched for. A list of types from this model that derive directly from the given type. Materialization state: none required. This property should only be called when it is ok to materialize the full metadata. Cache state: 'full' after the property returns. Finds all function imports with the given name which are bindable to an instance of the giving binding type or a more derived type. The binding entity type. The name of the function imports to find. May be qualified with an entity container name. The function imports that match the search criteria. Finds an entity set given a name that may be container qualified. If no container name is provided, the default container should be used. The name which might be container qualified. If no container name is provided, the default container should be used. The entity set if one was found or null. Finds a service operation for the given name. The name of the service operation to find. May be qualified with an entity container name. The function import representing a service operation or null if one could not be found with the given name. Finds a function or action bound to the specific type with the given name. The binding type. The name of the function imports to find. May be qualified with an entity container name. The parameter names of the non-binding parameters, if provided in the request URI. The function import that matches the search criteria or null if there was no match. Ensure the EDM schema type for the specified . The resource type for which to create an EDM schema type. The EDM schema type found or created for the . Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Creates an for the specified . The resource type to create an for. The optional annotations for the resource type; the annotations can contain facets that need to be applied to the type reference. An instance for the . Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Gets or creates a collection type reference for the . The item resource type to create an EDM collection type reference for. The collection resource type to create an EDM collection type for. The optional annotations for the resource type; the annotations can contain facets that need to be applied to the type reference. A collection type reference for the item type. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Gets or creates the default entity container. The default entity container. Add the given entity set to the model. ResourceSetWrapper instance to add. an instance of IEdmEntitySet for the given . Add the given service operation to the model. ServiceOperationWrapper instance to add. Ensures all of the metadata is loaded. Should only be used for $metadata Assert that the specified cache state has been reached (or exceeded). The that has to be reached. Asserts that the models caches are empty and that no types, containers, sets, etc have been built yet. Assert that a specified materialization state has been reached (or exceeded). The that has to be reached. Fills in the rest of required information for navigation properties. Resource set to inspect. Resource type to inspect. Navigation property to inspect. Compute the cache key used to cache schema types (based on resource type names). The namespace name of the type. The resource type to use in the computation. The cache key to be used for looking up and storing schema types. This method is necessary because resource types don't always have a namespace. In such cases, the full name of the resource type is just its name. In EDM, however, the respective schema type will be created in the container namespace. As a result, we have to always include the namespace in the key computation in order to find cached schema types for resource types. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Gets or creates an for the . The item resource type to create an EDM collection type for. The collection resource type to create an EDM collection type for. The optional annotations for the resource type; the annotations can contain facets that need to be applied to the type reference. An instance for the item type. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Gets or creates an for the . The collection resource type that the edm type is being created from. The item resource type to create an EDM collection type for. The optional annotations for the resource type; the annotations can contain facets that need to be applied to the type reference. An instance for the item type. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Ensure that all the metadata elements have been created or create them. Materialization state: full required. No change in materialization state. Cache state: none required. Cache state will be 'Full' after the method returned. Groups all visible resource types by there namespace. The visible types in provider metadata. Set to true if we see any visible MLE. Set to true if we see any visible NamedStream. Materialization state: full required. No change in materialization state. Cache state: none required. No change in cache state. Add a resource type to the list of visible types for the type's namespace. The resource type to add. Set to true if we see any visible MLE. Set to true if we see any visible NamedStream. True if we successfully added the type, false if the type is already in the hashset. Materialization state: full required. No change in materialization state. Cache state: none required. No change in cache state. Ensure that all the schema types have been created or create them. Visible types in provider metadata Materialization state: full required. No change in materialization state. Cache state: none required. No change in cache state. Ensure that all entity containers have been created or create them. Materialization state: EntityContainers required. No change in materialization state. Cache state: none required. 'EntityContainers' when the method returns. Match navigation properties with their partners for all entity sets. Materialization state: Full required. No change in materialization state. Cache state: none required. No change in cache state. Match navigation properties with their partners for the given resource set. The resource set to supply the necessary data for matchign up the navigation properties. Materialization state: Full required. No change in materialization state. Cache state: none required. No change in cache state. Match navigation properties with their partners for the given set and type Resource type to inspect. Resource set to inspect. Materialization state: Full required. No change in materialization state. Cache state: none required. No change in cache state. Fixes up the two navigation properties refered to by a resource association set Resource association set to inspect. Creates an for the and adds it to the schema type cache. The resource type to create an EDM schema type for. The namespace name for the entity type to create. Note that the namespace on the can be null in which case this will be the default (i.e., container) namespace for the type. An instance for the . This method will transitively ensure that all the base types of this type have been created. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Returns whether or not the property should be included in the $metadata output. Navigation properties are only included when their target type is reachable from a visible set. Structural properties are always included. The property to check. Whether the property should be included in $metadata. Creates an for the and adds it to the schema type cache. The resource type to create an EDM schema type for. The namespace name for the entity type to create. An instance for the . This method will transitively ensure that all the base types of this type have been created. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Gets or creates an for the . The resource type to create an EDM collection type for. The optional annotations for the resource type; the annotations can contain facets that need to be applied to the type reference. An instance for the . Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Gets or creates an for the . The resource type to create an EDM collection type for. The optional annotations for the resource type; the annotations can contain facets that need to be applied to the type reference. An instance for the . This method is called with entity types (navigation properties) and entity collection types (collection types). Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Creates an for the . The declaring type of the . The resource property to create an EDM property for. An instance for the . Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Adds a schema type to the internal caches of the model. The to cache. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Searches for an entity container with the given name in this model and returns null if no such entity container exists. The name of the entity container being found. The requested entity container, or null if no such entity container exists. Materialization state: none required. No change in materialization state. Cache state: EntityContainers required. No change in cache state. Get the schema element hash set for the given namespace The namespace of the schema element. resource type hash Materialization state 'Full' or cache state 'Full' required. No change to either state. Gets the namespace of a resource type. If it's null, default to the container namespace. The resource type to get the namespace name for. The namespace of the . Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. Gets the namespace of the container. If it's null, default to the container name. The namespace of the default container. Materialization state: none required. No change in materialization state. Cache state: none required. No change in cache state. First sets the materialization state, then runs the specified action and then resets the materialization state and checks the cache state. The action to run. The to run the action in. The materialization is expected to be 'Incremental' when this method is called. The method should only be used in public API methods that are not re-entered by private/internal code since only public API code should set the materialization state. Sets the current materialization state of the metadata if the new state is greater than the existing state. The new state to set. This method assumes that it is never called with the being the same as the current state. Nested calls in the same state are not allowed. Checks whether a specified materialization state has been reached (or exceeded). The state that has to be reached. true if the materialization state has reached the state specified in ; otherwise false. Sets the current cache state of the metadata if the new state is greater than the existing state. The new state to set. This method assumes that it is never called with the being set to MetadataProviderState.Incremental. Checks whether a specified cache state has been reached (or exceeded). The state that has to be reached. true if the cache state has reached the state specified in ; otherwise false. Gets the vocabulary annoations defined in the model. Gets the referenced models. Gets the collection of schema elements that are contained in this model. Materialization state: none required. This property should only be called when it is ok to materialize the full metadata. Cache state: 'full' after the property returns. Gets the model's annotations manager. The IDSMP metadata provider backing this model. Gets the vocabulary annotations cache for this model. The current mode in which the model is being used. Minimum Edm Metadata Version. This is calculated during full metadata loading. Whether we are serializing $metadata document, and therefor may need to hide certain properties. IODataResponseMessage interface implementation. Reference to the IDataServiceHost object we are wrapping Host as IDataServiceHost2, or null if it does not implement it (just ISDH, then). Stream to which response payload needs to be written. Note that this is NOT always the IDSH Response Stream. For WCF we create an XmlWriterStream when it is time to serialize. Reference to the ResponseHeaders on the host, if it is IDSH2. Otherwise null. Creates a new instance of AstoriaResponseMessage. Host instance associated with this request. Returns the value of the given response header. Name of the response header. Returns the value of the given response header. Sets the value of the given response header. Passes the value through to the host immeadiately. After we call SetStreamthis should never be called again. Name of the header. Value for the header to be set. Returns the stream to which response payload needs to be written. Returns the stream to which response payload needs to be written. Set the response stream. This gets called in the writer Action that DataService.HandleRequest() returns. In the custom host scenario, the value will be the stream we get from the underlying host. In the WCF scenario, the stream passed into the action (and thus this) will be the XmlWriterStream we create in DelegateBodyWriter. Stream to which the response needs to be written. Clears the system header for304. Only clearing specific system headers to avoid removing custom headers Sets the response status code and the default caching and versioning headers. The request description for the current request. The status code for the response. Gets all the response headers. The ResponseStatusCode of the underlying host. Response headers from the underlying host. Must be IDSH2 to succeed. Use this class to represent a collection of entities. Resource type of a single item in the collection. Constructor. Resource type of a single item in the collection. Returns the instance type for a collection of specified . Resource type of a single item in the collection. Instance type of the collection of . Returns EDM name of the type for a collection of specified . Resource type of a single item in the collection. EDM name of the type of a collection of . Resource type of a single item in the collection. The resource type. Enumeration for the kind of service operations V1 Service Operation Side-effecting operation. This class represents the path expression to calculate the target resource set of a Function or Action. The separator for the binding properties on the path. Path expression to calculate the target resource set of a function or action. The binding parameter to a function or action. Resource properties and type segments on the path. Creates a new instance of the class. Path expression to calculate the target resource set of a function or procedure. The must start with the binding parameter name followed by navigation properties that are separated by "/". For example, if the binding parameter is customer, a valid path can be "customer/Orders/OrderDetails". Sets the binding resource type for the current path expression. The resource type this path expression will bind to. Sets the binding resource type for the current path expression. Provider wrapper instance. Gets the target set from the binding set and path expression. Provider instance to resolve the association set. Binding resource set. Returns the target resource set for the path expression. Path expression to calculate the target resource set of a function or procedure. The path expression. This struct holds the type and property info for a path segment. The resource type where the property is defined. The resource property of the segment. Use this class to represent a action. In-order parameters for this action. Initializes a new instance. Name of the action. Return type of the action. Result resource set of the action if the action returns an entity or a collection of entity; null otherwise. the kind of the operation parameter binding (Never, Sometimes, Always). In-order parameters for this action. The value of must be set to or if the first parameter in is the binding parameter or if the first parameter is not a binding parameter. If the value of is set to then the IDataServiceActionProvider.AdvertiseServiceAction method will not be called for the action and the action will be always advertised by the default convention. Initializes a new instance. Name of the action. Return type of the action. the kind of the operation parameter binding (Never, Sometimes, Always). In-order parameters for this action; the first parameter is the binding parameter. Path expression to calculate the result resource set of the function if the action returns an entity or a collection of entity; null otherwise. The value of must be set to or if the first parameter in is the binding parameter or if the first parameter is not a binding parameter. If the value of is set to then the IDataServiceActionProvider.AdvertiseServiceAction method will not be called for the action and the action will be always advertised by the default convention. Initializes a new instance. Name of the action. Return type of the action. Result resource set of the action if the action returns an entity or a collection of entity; null otherwise. Path expression to calculate the result resource set of the function if the action returns an entity or a collection of entity; null otherwise. In-order parameters for this action; the first parameter is the binding parameter. the kind of the operation parameter binding (Never, Sometimes, Always). The value of must be set to or if the first parameter in is the binding parameter or if the first parameter is not a binding parameter. If the value of is set to then the IDataServiceActionProvider.AdvertiseServiceAction method will not be called for the action and the action will be always advertised by the default convention. Gets all the parameters for the given service action. The parameters for the given service action. Gets the return type of the action. The return type of the action. Gets the path expression to calculate the result resource set of the function if the function returns an entity or a collection of entity. The Path expression to calculate. Gets the binding parameter to this action; null if this action is top-level. The binding parameter to this action; null if this action is top-level. Stores information about the referential constraint. list of custom annotations that needs to be flowed via $metadata endpoint. Creates a new instance of ResourceReferentialConstraint. Principal end of the referential constraint. List of the properties from the dependent end that take part in this constraint. Add the given annotation to the list of annotations that needs to flowed via the $metadata endpoint NamespaceName to which the custom annotation belongs to. Name of the annotation. Value of the annotation. Returns the principal end for this referential constraint. List of properties of the dependent end that take part in this constraint. Returns the list of custom annotations defined on this property. static xml utility function Creates a new XmlWriterSettings instance using the encoding. Encoding that you want to specify in the reader settings as well as the processing instruction A writer settings instance with the given encoding. Creates a new XmlWriter instance using the specified stream and writers the processing instruction with the given encoding value The stream to which you want to write Encoding that you want to specify in the reader settings as well as the processing instruction XmlWriter with the appropriate xml settings and processing instruction Sets public key string for friend assemblies. ProductPublicKey is an official MS supported public key for external releases. TestPublicKey is an unsupported strong key for testing and internal use only Dont know what this is Used for comparison with external assemblies for silverlight like Microsoft.VisualBasic. Used for comparison with external assemblies for desktop like Microsoft.VisualBasic. Constructs a new sys description. description text. Retrieves the description text. description AutoGenerated resource class. Usage: string s = TextRes.GetString(TextRes.MyIdenfitier); Strongly-typed and parameterized string resources. A string like "The expression type {0} is not supported." A string like "The value for the given enum type '{0}' is not valid. Please specify a valid enum value." A string like "Open navigation properties are not supported on OpenTypes. Property name: '{0}'." A string like "Type '{0}' has a method '{1}' which is a generic IEnumerable but is marked with a SingleResultAttribute. Only IQueryable methods support this attribute." A string like "Overloading is not supported but type '{0}' has an overloaded method '{1}'." A string like "Method '{0}' has a parameter '{1}' which is not an [in] parameter." A string like "Method '{0}' has a parameter '{1}' of type '{2}' which is not supported for service operations. Only primitive types are supported as parameters." A string like "Service operation '{0}' produces instances of type '{1}', but having a single entity set for that type is required." A string like "Unable to load metadata for return type '{1}' of method '{0}'." A string like "The given resource type instance for the type '{0}' is not known to the metadata provider." A string like "$expand does not support '{0}' properties expanded simultaneously on the same segment." A string like "$expand does not support '{0}' ordering expressions simultaneously on the top level type. Ordering expressions include top level $orderby expressions and the key columns in the top level entity type." A string like "The requested media type '{0}' is not compatible with the $callback query option." A string like "The binding parameter for service action '{0}' returned by IDataServiceActionProvider.GetServiceActionsByBindingParameterType() is null. The GetServiceActionsByBindingParameterType method must return service actions that are bindable to the given resource type." A string like "The service action '{0}' returned by IDataServiceActionProvider.GetServiceActionsByBindingParameterType() has a binding parameter of type '{1}' that is not bindable to the resource type '{2}'. The GetServiceActionsByBindingParameterType method must return service actions that are bindable to the given resource type." A string like "The resource set '{0}' returned by the provider is not read-only. Please make sure that all the resource sets are set to read-only." A string like "The resource type '{0}' returned by the provider is not read-only. Please make sure that all the types are set to read-only." A string like "The service operation '{0}' returned by the provider is not read-only. Please make sure that all the service operations are set to read-only." A string like "More than one entity set with the name '{0}' was found. Entity set names must be unique." A string like "More than one resource type with the name '{0}' was found. Resource type names must be unique." A string like "More than one service operation with the name '{0}' was found. Service operation names must be unique." A string like "Complex type '{0}' has derived types and is used as the item type in a collection property. Only collection properties containing complex types without derived types are supported." A string like "The IDataServiceQueryProvider.GetQueryRootForResourceSet({0}) method must return an IQueryable instance that can be converted to the type '{1}'." A string like "The service action '{0}' has the binding parameter of type '{1}', but there is no visible resource set for that type. The service action should be made hidden or a resource set for type '{1}' should be made visible." A string like "The service action '{0}' has the resource set path expression '{1}', but there is no visible resource set that can be reached from the binding parameter through the path expression. The service action should be made hidden or a resource set targeted by the path expression should be made visible." A string like "A service action with the name '{0}' already exists. Please make sure that the list returned by IDataServiceActionProvider.GetServiceActionsByBindingParameterType() contains unique service action names." A string like "The filter for an expand segment should be a lambda type, but the specified filter is of type '{0}'." A string like "The filter for an expand segment should return a boolean value, but the specified filter returns '{0}'." A string like "The filter for an expand segment should take a single parameter, but the specified filter takes '{0}'." A string like "Query parameter item '{0}' expected, but both '{1}' and '{2}' are inexact matches for it." A string like "Fragment parts are not supported in template matches but the base URI '{0}' has one." A string like "Query parts are not supported in template matches but the base URI '{0}' has one." A string like "The X-HTTP-Method header should have a single value, but has '{0}' instead." A string like "The X-HTTP-Method header should be 'PUT', 'MERGE', 'PATCH' or 'DELETE', but is '{0}' instead." A string like "Query parameter '{0}' is specified, but it should be specified exactly once." A string like "The query parameter '{0}' begins with a system-reserved '$' character but is not recognized." A string like "The incoming message property '{0}' on the current operation context must be a System.Uri object." A string like "Character set '{0}' is not supported." A string like "Value for MIME type parameter '{0}' is incorrect because it contained escape characters even though it was not quoted." A string like "Value for MIME type parameter '{0}' is incorrect because it terminated with escape character. Escape characters must always be followed by a character in a parameter value." A string like "Value for MIME type parameter '{0}' is incorrect because the closing quote character could not be found while the parameter value started with a quote character." A string like "The property '{0}' is not a valid property name for type '{1}'. Please specify a valid property name." A string like "Expecting XML element '{0}', but found '{1}' instead." A string like "The '{0}' is not allowed. Member access or specifying a type identifier on a resource set reference is not allowed." A string like "Expression of type '{0}' expected." A string like "Operator '{0}' incompatible with operand type '{1}'." A string like "Operator '{0}' incompatible with operand types '{1}' and '{2}'." A string like "Syntax error '{0}'." A string like "No applicable function found for '{0}' with the specified arguments. The functions considered are: {1}." A string like "'not' operator does not support type '{0}'." A string like "An applicable function could not be determined for '{0}' with the arguments specified. The unary '{0}' function is not supported inside an 'any' or 'all' function." A string like "The operator '{0}' is not supported for the 'null' literal; only equality checks are supported." A string like "Ordering does not support expressions of type '{0}'." A string like "Unknown function '{0}'." A string like "No property '{0}' exists in type '{1}'." A string like "The identifier '{0}' is not defined." A string like "A resource type named '{0}' does not exist." A string like "Unrecognized '{0}' literal '{1}'." A string like "Unterminated literal in '{0}'." A string like "Unterminated string literal in '{0}'." A string like "Skip token values are expected to be literals. Unrecognized literal '{0}' found." A string like "The collection property '{0}' cannot be used in $filter or $orderby query expression. Collection properties are not supported with these query options." A string like "The range variable '{0}' has already been declared." A string like "Incorrect format for {0} argument '{1}'." A string like "Property {1} on type {0} is of primitive type and cannot be used as a navigation property." A string like "$select doesn't support projecting properties of complex type. Type {0}, property {1}." A string like "The projection from property '{1}' of type '{0}' is not valid. The $select query option does not support projecting items from a collection property." A string like "Only properties specified in $expand can be traversed in $select query options. Property {0}." A string like "The named stream '{0}' must be the last segment in a $select path." A string like "The service action '{0}' must be the last segment in a $select path." A string like "Both the $select and $expand query options could not be specified for the '{0}' property because the type qualifiers do not match. The type qualifier specified in the $expand query option must be the same as the one specified in the $select query option." A string like "The property '{0}' on type '{1}' resolves to an open property, but the same property is already a declared property on type '{2}'. In a query URI, the same property cannot belong to two different types in the same type hierarchy. You must either remove one property from the query URI or use the same type identifier." A string like "The {0} query option is not valid because it contains a property path which ends with the type identifier '{1}'. Property paths in query options cannot end with a type identifier. Please make sure that property paths specified in query options end with a property name." A string like "Type '{0}' does not have a property named '{1}'; there is no service action named '{1}' that is bindable to the type '{0}'; and there is no type with the name '{1}'." A string like "Resource not found for the segment '{0}'." A string like "The segment '{1}' in the request URI is not valid. Since the segment '{0}' refers to a primitive type property, the only supported value from the next segment is '$value'." A string like "Resource Not Found - '{0}' refers to a service operation which does not allow further composition." A string like "The request URI is not valid. Since the segment '{0}' refers to a collection, this must be the last segment in the request URI. All intermediate segments must refer to a single resource." A string like "The request URI is not valid. The segment '{0}' must be the last segment in the URI because it is one of the following: $batch, $value, $metadata, a collection property, a named media resource, a service operation that does not return a value, or a service action." A string like "The request URI is not valid. The segment '{0}' must refer to a navigation property since the previous segment identifier is '{1}'." A string like "The request URI is not valid. There must a segment specified after the '{0}' segment and the segment must refer to a entity resource." A string like "The request URI is not valid. The segment '{0}' is not valid. Since the uri contains the '{1}' segment, there must be only one segment specified after that." A string like "The request URI is not valid, $count cannot be applied to the segment '{0}' since $count can only follow a resource segment." A string like "The request URI is not valid, since the segment '{0}' refers to a singleton, and the segment '{1}' can only follow a resource collection." A string like "The URI '{0}' refers to a named stream and is not valid for '{1}' operation." A string like "The request URI is not valid. The segment '{0}' cannot include key predicates, however it may end with empty parenthesis." A string like "The type name '{0}' specified in the URI is not a valid type. Please make sure that the type name is valid and that it derives from the type '{1}'." A string like "The type '{0}' specified in the URI is neither a base type nor a sub-type of the previously-specified type '{1}'." A string like "Type identifier '{0}' in the URI cannot be specified immediately after '{1}' type identifier. There must be a property name specified between 2 type identifiers." A string like "The operation '{0}' is not bindable and must be called at the root level." A string like "Service action '{0}' requires a binding parameter, but it was invoked unbound." A string like "The binding parameter for '{0}' is not assignable from the result of the uri segment '{1}'." A string like "Batched service action '{0}' cannot be invoked because it was bound to an entity created in the same changeset." A string like "The request URI is not valid. $links cannot be applied to the segment '{0}' since $links can only follow an entity segment." A string like "The service operation '{0}' is missing a ODataServiceOperationResultKind attribute." A string like "Multiple Service Operations with the name '{0}' were found. There can only be one Service Operation with a given name in a model." A string like "The resource set '{0}' cannot be modified since it is already set to read-only." A string like "The path expression '{0}' is not a valid path expression. A valid path expression must start with the binding parameter name '{1}'." A string like "The path expression '{0}' is not a valid expression because the segment '{1}' is not a type identifier or a property on the resource type '{2}'." A string like "The path expression '{0}' is not a valid expression because the segment '{1}' is a property of type '{2}'. A valid path expression must only contain properties of entity type." A string like "The path expression '{0}' is not a valid expression because it ends with the type identifier '{1}'. A valid path expression must not end in a type identifier." A string like "The path expression '{0}' is not a valid expression because it contains an empty segment or it ends with '/'." A string like "ResourceTypeKind.Primitive, ResourceTypeKind.Collection and ResourceTypeKind.EntityCollection are not valid values for the '{0}' parameter." A string like "The resource type '{0}' cannot be modified since it is already set to read-only." A string like "The entity type '{0}' does not have any key properties. Please make sure that one or more key properties are defined for this entity type." A string like "Adding named streams to the type '{0}' is not allowed. Named streams can only be added to entity types." A string like "A property with same name '{0}' already exists in type '{1}'. Please make sure that there is no property with the same name defined in one of the base types." A string like "Complex types can not be marked as 'Open'. Error occurred for type '{0}'." A string like "A resource type of kind '{0}' cannot derive from a base resource type of kind '{1}'. Inheritance is only supported when resource types are of the same kind." A string like "The ItemType of a collection resource type cannot be of type '{0}'." A string like "A spatial property '{0}' cannot be used as key or ETag for the entity type '{1}'." A string like "The resource property '{0}' cannot be modified since it is already set to read-only." A string like "MimeType for property '{0}' is not valid. Please make sure that the mime type is not empty." A string like "The MimeType attribute is specified for property '{0}', which is of kind '{1}'. A MimeType can only be specified on properties that are of kind ResourcePropertyKind.Primitive." A string like "MIME type '{0}' for property '{1}' is not in 'type/subtype' format. Please specify a valid value for mime type." A string like "'{0}' parameter does not match with the type of the resource type in parameter '{1}'." A string like "The resource contains value '{0}' which cannot be serialized." A string like "The serialized resource has a null value in key member '{0}'. Null values are not supported in key members." A string like "The response exceeds the maximum {0} results per collection." A string like "The top-level type '{0}' for this request is not supported for serialization." A string like "The collection property '{0}' has a null value. Collection properties that return a null value are not supported." A string like "The collection type returned by the property '{0}' does not implement IEnumerable. Collection properties must be of a type that implements IEnumerable." A string like "A circular loop was detected while serializing the property '{0}'. You must make sure that loops are not present in properties that return a collection property or complex type." A string like "The MIME type '{0}' for service operation '{1}' is not in 'type/subtype' format." A string like "The MIME type specified for service operation '{0}' is not valid. The MimeType property cannot be set to null or empty." A string like "The service operation '{0}' cannot be modified since it is already set to read-only." A string like "The '{1}' parameter must be null when the '{0}' parameter value is '{2}', however the '{1}' parameter cannot be null when the '{0}' parameter is of any value other than '{2}'. Please make sure that the '{0}' parameter value is set according to the '{1}' parameter value." A string like "'{0}' must be null when '{1}' is null or not an EntityType." A string like "'{0}' must be null when '{1}' is null, not an entity type or not an entity collection type." A string like "When '{0}' is an entity type, '{1}' cannot be null and the resource type of '{1}' must be assignable from '{0}'." A string like "When '{0}' is an entity type or an entity collection type, '{1}' and '{2}' cannot be both null and the resource type of the result set must be assignable from '{0}'." A string like "An invalid HTTP method '{0}' was specified for the service operation '{1}'. Only the HTTP 'POST' and 'GET' methods are supported for service operations." A string like "A parameter with the name '{0}' already exists. Please make sure that every parameter has a unique name." A string like "The resource type '{0}' is not a type that can be returned by a service operation. A service operation can only return values of an entity type, a complex type or any primitive type, other than the stream type." A string like "The resource type '{0}' is not a type that can be returned by a function or action. A function or action can only return values of an entity type, an entity collection type, a complex type, a collection type or any primitive type, other than the stream type." A string like "The operation must be bindable when '{0}' is not null." A string like "The binding parameter type must be an entity type or an entity collection type when '{0}' is not null." A string like "The '{0}' parameter cannot be an entity collection resource type." A string like "The '{0}' parameter is of resource type kind '{1}' and it is not the binding parameter. Parameter of type kind '{1}' is only supported for the binding parameter." A string like "The service operation parameter '{0}' of type '{1}' is not supported." A string like "Error reading syndication item: '{0}'." A string like "The open property '{0}' has an value which is not of valid type.. Please make sure that the property type is supported." A string like "One or more open properties of the given instance of type '{0}' has a null or empty name specified." A string like "The PropertyName property value '{1}' of EntityPropertyMappingAttribute on type '{0}' is not valid." A string like "The property '{0}' on type '{1}' is not present or is inaccessible." A string like "The PropertyName property value '{0}' on more than one EntityPropertyMappingAttribute on resource type '{1}' is provided more than once." A string like "The property '{0}' provided at the end of the PropertyName property of the EntityPropertyMappingAttribute on a resource type is not a primitive type." A string like "The property '{0}' on type '{1}' is mapped to '{2}'. Mapping to '{2}' is only allowed for string properties." A string like "The property '{0}' on the type '{1}' is of the type 'Edm.Stream'. Stream properties cannot be mapped with an entity property mapping." A string like "The property '{0}' on the type '{1}' is a spatial type. Spatial type properties cannot be mapped with an entity property mapping." A string like "The property '{0}' on the type '{1}' is a collection. Collection properties cannot be mapped with an entity property mapping." A string like "The TargetName property path '{0}' set in the EntityPropertyMappingAttribute is not valid." A string like "The attribute identifier '{0}' is provided in the middle of the TargetName property of EntityPropertyMappingAttribute." A string like "The TargetName property '{0}' on more than one EntityPropertyMappingAttribute on resource type '{1}' have the same value. Conflicting properties are '{2}' and '{3}'." A string like "EntityPropertyMapping attributes are only allowed to be specified on entity types. The attribute specification for resource type '{0}' is not allowed." A string like "The value of '{0}' property on type '{1}' is not one of the allowed values. Allowed values are 'true' or 'false'." A string like "The value of '{0}' property on member '{1}' of type '{2}' is not one of the allowed values. Allowed values are 'true' or 'false'." A string like "The extended attribute '{0}' on type '{1}' is not allowed for current EntityPropertyMappingAttribute." A string like "The extended attribute '{0}' on member '{1}' of type '{2}' is not allowed for current EntityPropertyMappingAttribute." A string like "The required extended attribute '{0}' is missing for resource type '{1}'." A string like "The value for TargetTextContentKind property value of '{0}' on type '{1}' for EntityPropertyMappingAttribute is not valid." A string like "The value for TargetTextContentKind property value of '{0}' on member '{1}' of type '{2}' for EntityPropertyMappingAttribute is not valid." A string like "The property path '{0}' specified for the EntityPropertyMappingAttribute does not correspond to any property in type '{1}' or one of its base types." A string like "A resource type named '{0}' does not exist in the metadata." A string like "An entity resource type is expected, however the resource type '{0}' is of type kind '{1}'." A string like "A complex resource type is expected, however the resource type '{0}' is of type kind '{1}'." A string like "The clr type '{0}' is an unknown resource type to the metadata provider." A string like "The resource type '{0}' does not define a property that is named '{1}'." A string like "The CLR type '{0}' does not define a public property named '{1}'. All properties declared on types in the object model must be public." A string like "The property '{0}' must be a navigation property defined on the resource type '{1}'." A string like "The operation '{0}' has the resource set '{1}' that is not visible. The operation '{0}' should be made hidden or the resource set '{1}' should be made visible." A string like "The service action '{0}' has the resource set path expression '{1}'. However there is no visible target resource set when it is bind to the resource set '{2}'." A string like "The operation '{0}' contains a path expression and cannot be invoked as a top level operation." A string like "Unable to create ServiceOperationProvider. Type '{0}' is abstract." A string like "The batch request exceeds the maximum {0} operations per request." A string like "The batch request operation exceeds the maximum {0} changes per change set." A string like "Method '{0}' on type '{1}' is marked as a change interceptor method but has {2} parameters. Two parameters are expected." A string like "Unable to create data provider. Type '{0}' for data source in '{1}' is abstract." A string like "The request includes {0} $expand segment(s), but the maximum allowed is {1}." A string like "Method '{0}' on type '{1}' is marked as a query interceptor method but has {2} parameters. Query interceptors should take no parameters." A string like "Entity set '{0}' declared on attribute for method '{1}' of type '{2}' was not found." A string like "Method '{0}' on type '{1}' us marked as an authorization method but has a return type of '{2}' when no return value is expected." A string like "Method '{0}' on type '{1}' returns no value, but a '{2}' return type is required for a query interceptor method." A string like "Parameter '{0}' of method '{1}' on type '{2}' is of type '{3}' but a type assignable from '{4}' is required." A string like "Parameter '{0}' of method '{1}' on type '{2}' is of type '{3}' but should be of type System.Data.Web.ResourceAction." A string like "Method '{0}' on type '{1}' returned a null expression." A string like "Return type of method '{0}' on type '{1}' is of type '{2}' but a type assignable to '{3}' is required for a query interceptor." A string like "Type '{0}' has a method '{1}' with parameter '{2}' declared as an [Out] parameter. The parameter should be declared as [In] only." A string like "If-Match or If-None-Match HTTP headers cannot be specified since the URI '{0}' refers to a collection of resources or has a $count or $link segment or has a $expand as one of the query parameters." A string like "Since entity type '{0}' has one or more etag properties, If-Match HTTP header must be specified for DELETE/PUT operations on this type." A string like "'{0}' is not a valid value for the 'Content-ID' header. In batch requests, the 'Content-ID' header must be an integer value." A string like "'{0}' is not a unique 'Content-ID' in the given batch requests. In batch requests, every 'Content-ID' must be a unique value." A string like "Request version '{0}' specified for header '{1}' is not valid. Please specify a valid version value." A string like "Request version '{0}' is not a valid request version. The only supported versions are {1}." A string like "The MinDataServiceVersion '{0}' is not a valid version. The only supported versions are {1}." A string like "The MinDataServiceVersion '{0}' is greater than the MaxProtocolVersion property in configuration '{1}'." A string like "The DataServiceVersion '{0}' is too low for the request. The lowest supported version is '{1}.{2}'." A string like "The MaxDataServiceVersion '{0}' is too low for the response. The lowest supported version is '{1}.{2}'." A string like "The MaxDataServiceVersion '{0}' is lower than the MinDataServiceVersion '{1}'." A string like "Request version '{0}' is too high for the server. Please specify a request version less than or equal to '{1}'." A string like "Since '{0}' is a key property, it cannot be updated." A string like "The etag value '{0}' specified in one of the request headers is not valid. Please make sure only one etag value is specified and is valid." A string like "The given page size {0} for entity set '{1}' should have a non-negative value." A string like "The number of keys '{0}' in skip token with value '{1}' did not match the number of ordering constraints '{2}' for the resource type." A string like "The resource type '{0}' specified for the ResourceAssociationSetEnd is not valid for resource property '{1}'. The resource type must be the declaring type of the property." A string like "ResourceAssociationSets '{0}' and '{1}' have a ResourceAssociationSetEnd referring to the same EntitySet '{2}' through the same AssociationType. Make sure that if two or more AssociationSets refer to the same AssociationType, the ends must not refer to the same EntitySet. For CLR context, this could happen if multiple entity sets have entity types that have a common ancestor and the ancestor has a property of derived entity types." A string like "No visible ResourceAssociationSet found for navigation property '{0}' on type '{1}'. There must be at least one ResourceAssociationSet for each navigation property." A string like "Resource type '{0}' was registered by DataServiceConfiguration.EnableAccess(), however it no longer exists in the data service provider." A string like "Named streams are not supported on derived entity types. Entity Set '{1}' has a instance of type '{0}', which is an derived entity type and has named streams. Please remove all named streams from type '{0}'." A string like "An IEdmModel instance was found that failed validation. The following errors were reported:\r\n{0}" A string like "No changes are allowed to the configuration after '{0}' is invoked." A string like "The given name '{0}' was not found in the entity sets." A string like "The given name '{0}' was not found in the entity types." A string like "The given name '{0}' was not found in the service operations." A string like "The given type '{0}' is not a complex type." A string like "The response requires that version {0} of the protocol be used, but the MaxProtocolVersion of the data service is set to {1}." A string like "More than one query parameter specified with the name '{0}' in request URI '{1}'." A string like "The URI '{0}' is not valid for POST operation. For POST operations, the URI must refer to a service operation or an entity set." A string like "The URI '{0}' is not valid for PUT operation. The URI must point to a single resource for PUT operations." A string like "The URI '{0}' is not valid for MERGE operation. The URI must point to a single resource for MERGE operations. MERGE operation against a media resource is not supported." A string like "The URI '{0}' is not valid for PATCH operation. The URI must point to a single resource for PATCH operations. PATCH operation against a media resource is not supported." A string like "The URI '{0}' is not valid for DELETE operation. The URI must refer to a single resource from an entity set or from a property referring to a set of resources." A string like "The URI '{0}' is not valid. The segment before '$value' must be a Media Link Entry or a primitive property." A string like "The number of keys specified in the URI does not match number of key properties for the resource '{0}'." A string like "The resource type '{0}' is a Media Link Entry. However, in the payload of the request the <m:properties> element was serialized as a child of the <atom:content> element instead of the <atom:entry> element. This indicates that the client is not serializing the resource as a Media Link Entry." A string like "The resource type '{0}' is not a Media Link Entry. However, in the payload of the request the <m:properties> element was serialized as a child of the <atom:entry> element instead of the <atom:content> element. This indicates that the client is incorrectly serializing the resource as a Media Link Entry." A string like "The service action identifier '{0}' is invalid. Service action identifiers must not contain a '{1}'." A string like "The property '{0}' referred in the request URI is a open property and refers to a collection of resources. Open properties are not allowed to contain collections." A string like "Property '{0}' requires a non-negative value." A string like "The method '{0}' must not set the HTTP response headers 'Content-Type' and 'ETag'." A string like "Recursion reached allowed limit: '{0}'." A string like "The URI '{0}' is not valid since it is not based on '{1}'." A string like "Failed to create absolute URI. The URI '{0}' is not valid because it cannot be based on '{1}'. When the URI for an operation is relative, you must remove all preceding forward slashes." A string like "A constructor which accepts no parameters was not found for type '{0}'. Every entity type must have a constructor which accepts no parameters." A string like "The type '{0}' is an abstract type. For PUT, POST and DELETE operations, the type specified must be a concrete type with a constructor that accepts no parameters." A string like "Error processing request stream. Error encountered in converting the value from request payload for property '{0}' to type '{1}', which is the property's expected type. See inner exception for more detail." A string like "Could not find a property named '{0}' on type '{1}'." A string like "The content type '{0}' is not valid for type '{1}'." A string like "The content type '{0} is not valid for open property '{1}'. For open properties, the content type must be 'text/plain'." A string like "The content type '{0}' is not supported." A string like "Error processing request stream. The value of the property '{0}' specified is null and hence you cannot dereference the property." A string like "Error processing request stream. The property '{0}' represents a collection of resources and hence cannot be set to null." A string like "Error processing request stream. Since URI '{0}' points directly to a top level resource, it cannot be set to null." A string like "The content-type '{0}' is not a valid content type for this request. The content-type must be one of the following: {1}." A string like "Error processing request stream. Error encountered in setting value for property '{0}'. Please verify that the value is correct." A string like "Error processing request stream. Property '{0}' is a read-only property and cannot be updated. Please make sure that this property is not present in the request payload." A string like "The request exceeds the maximum {0} resources that can be referenced in a single POST request." A string like "The value of the property '{0}' is null. Properties that are a collection type of primitive or complex types cannot be null." A string like "The type '{0}' specified on collection property '{1}' is not a collection type. Only a collection type can be specified on a collection property." A string like "The collection type specified on property '{1}' that contains an item type '{0}' is not of the declared collection type, which is a collection type containing items of type '{2}'." A string like "An item in the collection property '{0}' has a null value. Collection properties that contain a null item are not supported." A string like "An item in the collection property '{0}' is not of the correct type. All items in this collection property must be of type '{1}'." A string like "An open collection property '{0}' was found. In OData, open collection properties are not supported." A string like "Error processing request stream. The payload for property '{0}' must represent a valid array format for collection properties." A string like "Error processing request stream. The type name '{0}' is not valid." A string like "Error processing request stream. The type name '{0}' is not valid for the given URI it represents. The expected type must be '{1}' or one of its derived types." A string like "Error processing request stream. Values for properties of type 'decimal' and 'int64' must be quoted in the payload. Make sure the value for property '{0}' is quoted." A string like "Error processing request stream. '{0}' is not a valid JSON literal. 'true', 'false' and 'null' are only valid JSON literals. Make sure they are all lower-case." A string like "Error processing request stream. Missing ':' after '{0}'." A string like "Error processing request stream. The '__metadata' for complex type '{0}' may not specify an element named 'uri'." A string like "Error processing request stream. The 'results' element could not be found in the collection property '{0}'." A string like "Error processing request stream. There is no navigation property '{0}' on type '{1}'. title attribute value on related link elements must be a valid navigation property name." A string like "Error processing request stream. The value specified for element '{0}' is not valid." A string like "Error processing request stream. Element '{0}' cannot have child elements or a value specified if it has a null attribute with true value." A string like "Error processing request stream. The type name '{0}' is not an entity type and hence cannot be represented by an entry element in the payload." A string like "Error processing request stream. The mime type '{0}' specified is not valid. The type attribute in link element must have '{1}' as the mime type." A string like "Error processing request stream. The value '{0}' of the 'type' parameter in the 'type' attribute of the link element is not valid. The value must be '{1}'." A string like "Error processing request stream. The value '{0}' of the 'type' parameter in the 'type' attribute of the link element is not valid. The value must be '{1}' or '{2}." A string like "Error processing request stream. Since the property '{0}' refers to a reference property, the URI specified in the href attribute must refer to a single resource." A string like "Error processing request stream. '{0}' is not a valid child element under '{1}' element. The '{1}' can only have '{2}' or '{3}' as child elements and they should live in the atom namespace." A string like "Entity set '{0}' has rights '{1}' applied to it, but entity set '{2}' has rights '{3}'. Entity sets of the same type must have the same rights." A string like "HasStream attribute for entity type '{0}' cannot be empty." A string like "Default entity set name '{0}' is not valid. Please make sure that the entity set name is valid." A string like "Navigation property '{0}' on type '{1}' cannot be used because the entity set '{2}' does not have an association set specified for it." A string like "Unable to load metadata for type '{0}'. The mapped OSpace type was not found. Please make sure you register the mapped OSpace type." A string like "Unsupported value '{0}' for HasStream attribute on entity type '{1}'." A string like "The property '{0}' on type '{1}' is of type '{2}' which is not a supported primitive type." A string like "Property '{0}' and '{1}' are IQueryable of types '{2}' and '{3}' and type '{2}' is an ancestor for type '{3}'. Please make sure that there is only one IQueryable property for each type hierarchy." A string like "The property '{0}' on type '{1}' is not a valid property. Make sure that the type of the property is a public type and a supported primitive type or a entity type with a valid key or a complex type." A string like "Type '{0}' has a key defined through an explicit DataServiceKeyAttribute, but it is not exposed through a top-level IQueryable property on the data context." A string like "On data context type '{1}', there is a top IQueryable property '{0}' whose element type is not an entity type. Make sure that the IQueryable property is of entity type or specify the IgnoreProperties attribute on the data context type to ignore this property." A string like "Type '{0}' has property '{1}' of entity type. Either this property has no corresponding entity set in the data context or one of its inherited types has a corresponding entity set. Specify IgnoreProperties attribute on the entity type for this property or use a property type that has a corresponding entity set in the data context." A string like "Key properties cannot be ignored using the IgnoreProperties attribute. For type '{0}', please make sure that there is a key property which is not ignored." A string like "The property name'{0}' specified in the ETagAttribute on type '{1}' is not a valid property name. Please specify a valid property name." A string like "Cannot apply the HasStreamAttribute to type '{0}'. HasStreamAttribute is only applicable to entity types." A string like "The property '{0}' on a complex type '{1}' is not a valid property. Navigation properties are not supported on complex types." A string like "The property '{0}' on a type '{1}' is not a valid property. A collection property that contains collection types is not supported." A string like "The property '{0}' on type '{1}' is a collection property with unsupported item type '{2}'. Only primitive types and complex types are valid item types for a collection property." A string like "The CLR Type '{0}' has no public properties and is not a supported resource type." A string like "The entity type '{0}' that the URI refers to does not match with the expected entity type '{1}'." A string like "A corresponding ObjectSpace type was not found for the type '{0}'. Please ensure that the ObjectContext or DbContext is valid." A string like "Internal Server Error. The type '{0}' is not a complex type or an entity type." A string like "Internal Server Error. Unable to find property '{1}' on type '{0}'. Please make sure that the property name is correct." A string like "Internal Server Error. The type '{0}' is not supported." A string like "Internal Server Error. The type '{0}' derives from '{1}' which is an unsupported type." A string like "Internal Server Error. The property '{0}' is of type '{1}' which is an unsupported type." A string like "Internal Server Error. The type '{0}' has inconsistent metadata and runtime type info." A string like "The resource set '{0}' is not known to the provider." A string like "The resource type '{0}' is not known to the provider." A string like "The resource type '{0}' must contain the resource property instance '{1}'." A string like "The resource property '{0}' must be a navigation property on the resource type '{1}'." A string like "The primitive type kind '{0}' is not supported." A string like "Found invalid value for facet '{0}'. Cannot convert a value of type '{1}' to the expected type '{2}'." A string like "The name '{0}' of a property is invalid; property names must not contain any of the reserved characters {1}." A string like "An attempt was made to convert a type of kind '{0}' to a schema type. This is invalid since the type kind '{0}' is not valid for schema types." A string like "The resource type kind '{0}' is not supported." A string like "The resource type kind '{0}' is not supported as the type kind of a collection item type. Only 'Primitive' and 'ComplexType' kinds are supported for collection item types." A string like "The resource type kind '{0}' is not supported as the type kind of a collection item type. Only 'Primitive', 'ComplexType' and 'EntityType' kinds are supported for collection item types." A string like "The resource property kind '{0}' is not supported." A string like "An internal error '{0}' occurred." A string like "Description for expanded properties has not been initialized." A string like "Description for projected properties has not been initialized." A string like "$expand does not support open properties." A string like "$callback can only be specified on GET requests." A string like "The data service or the data source must implement the IDataServiceActionProvider interface to support service actions." A string like "To support service actions, the MaxProtocolVersion of the data service must be set to DataServiceProtocolVersion.V3 or above." A string like "The IDataServiceActionProvider.AdvertiseServiceAction() method must return a non-null value for the actionToSerialize parameter if it returns true." A string like "The value returned by IDataServiceMetadataProvider.ContainerNamespace must not be null or empty." A string like "The value returned by IDataServiceMetadataProvider.ContainerName must not be null or empty." A string like "IDataServiceQueryProvider.CurrentDataSource must return an object of type that is assignable to T in DataService<T>." A string like "The collection returned by DataServiceConfiguration.AnnotationsBuilder must not contain null elements." A string like "The data service or the data source must implement the IDataServiceQueryProvider2 interface when the IDataServiceMetadataProvider2 interface is implemented." A string like "The 'ProviderBehavior' property for IDataServiceProviderBehavior interface must not return a null value." A string like "An error occurred while trying to write an error payload." A string like "ETag attribute must specify at least one property name." A string like "There is no System.ServiceModel.Web.WebOperationContext.Current instance." A string like "Malformed value in request header." A string like "The X-HTTP-Method header can only be used with POST requests." A string like "Content-Type header value missing." A string like "Media type is missing a parameter value." A string like "Media type requires a ';' character before a parameter definition." A string like "Media type requires a '/' character." A string like "Media type requires a subtype definition." A string like "Media type is unspecified." A string like "The property name specified in the IgnoreProperties attribute cannot be null or empty. Please specify a valid property name." A string like "')' or ',' expected." A string like "')' or operator expected." A string like "Digit expected." A string like "Expression expected." A string like "Identifier expected." A string like "'(' expected." A string like "Syntax error." A string like "The method 'all' without a supplied predicate is not supported." A string like "This data service endpoint does not support spatial literal values in the URI." A string like "Query option $expand cannot be applied to the requested resource." A string like "Query option $filter cannot be applied to the requested resource." A string like "Query option $format is not supported on a $batch request." A string like "Query options $select, $expand, $filter, $orderby, $inlinecount, $skip, $skiptoken and $top are not supported by this request method or cannot be applied to the requested resource." A string like "Query options $orderby, $inlinecount, $skip and $top cannot be applied to the requested resource." A string like "Query option $select cannot be applied to the requested resource." A string like "Unknown $inlinecount option, only "allpages" and "none" are supported" A string like "$count and $inlinecount only apply to an HTTP GET request." A string like "$inlinecount cannot be applied to the resource segment '$count'" A string like "A skip token can only be provided in a query request against an entity set when the entity set has a paging limit set." A string like "Skip tokens can only be provided for requests that return collections of entities." A string like "The AbsoluteRequestUri property of the data service host cannot be null." A string like "The AbsoluteRequestUri property of the data service host must be an absolute URI." A string like "The AbsoluteServiceUri property of the data service host cannot be null." A string like "The AbsoluteServiceUri property of the data service host must be an absolute URI." A string like "Forbidden" A string like "Segments with multiple key values must specify them in 'name=value' form." A string like "Method Not Allowed" A string like "Bad Request - Error in query syntax." A string like "Too many segments in URI." A string like "Empty segment encountered in request URL. Please make sure that a valid request URL is specified." A string like "The request URI is not valid, the segment $count cannot be applied to the root of the service." A string like "An action cannot be composed with a service operation that uses the WebInvokeAttribute." A string like "Functions are not supported in this version. Only Actions and Service Operations are supported." A string like "The ResourceTypeKind property of a ResourceType instance that is associated with a ResourceSet must have a value of 'EntityType'." A string like "Key properties cannot be defined in derived types." A string like "Key properties can only be added to ResourceType instances with a ResourceTypeKind equal to 'EntityType'." A string like "ETag properties can only be added to ResourceType instances with a ResourceTypeKind equal to 'EntityType'." A string like "The CLR type for the resource type cannot be a value type." A string like "Only collection properties that contain primitive types or complex types are supported." A string like "Only collections of an entity type are supported." A string like "Key Properties cannot be of nullable type. Please make sure the type of this property is not of Nullable<> type." A string like "The property 'CanReflectOnInstanceTypeProperty' on a NamedStream property is not settable." A string like "Invalid ResourcePropertyKind, ResourcePropertyKind.Stream must not be combined with any other flag." A string like "The etag value in the request header does not match with the current etag value of the object." A string like "If-Match or If-None-Match headers cannot be specified if the target type does not have etag properties defined." A string like "An action's binding parameter must be of type Entity or EntityCollection." A string like "Bindable actions or functions must have at least one parameter, where the first parameter is the binding parameter." A string like "A function that returns void is a routine with no observable result; such function is now allowed in the data service." A string like "A single resource was expected for the result, but multiple resources were found." A string like "EntityPropertyMapping for complex types is not allowed when being mapped to Syndication specific entities." A string like "If-None-Match HTTP header cannot be specified for update and delete operations." A string like "The /$batch resource only supports POST method requests." A string like "The method CreateDataService has been overridden but it returned a null value; a valid instance is required." A string like "There is no host attached to this service. Call AttachHost to provide a valid host that can provide a request to process." A string like "Not Implemented" A string like "Both If-Match and If-None-Match HTTP headers cannot be specified at the same time. Please specify either one of the headers or none of them." A string like "If-Match or If-None-Match HTTP headers cannot be specified for POST operations." A string like "If-Match or If-None-Match HTTP headers cannot be specified for service actions." A string like "If-None-Match HTTP header cannot be specified for DELETE operations." A string like "If-None-Match HTTP header cannot be specified for PUT operations." A string like "If-Match or If-None-Match HTTP headers cannot be specified for DELETE operations to $link end points." A string like "The content type specified in not valid for batch requests. Content type must be 'multipart/mixed' and there must be a valid single boundary delimiter specified." A string like "The URL representing the root of the service only supports GET requests." A string like "Specification of entity set page size is mutually exclusive with the specification of MaxResultsPerCollection property in configuration." A string like "The request could not be processed because the data service implements IExpandProvider, which does not support the paging of top-level results." A string like "Adding types through RegisterKnownType() is not supported for providers instantiated by the user." A string like "The request could not be processed because the data service implements IExpandProvider, which does not support projection." A string like "For custom providers, if GetService returns non-null for IDataServiceMetadataProvider, it must not return null for IDataServiceQueryProvider." A string like "Update operations are not supported for '$links' end points that refer to collection properties." A string like "The request could not be processed because the data service implements IExpandProvider, which does not support expansions on derived navigation properties." A string like "The resourceProperty parameter must be a navigation property on the resource type specified by the resourceType parameter." A string like "The resourceType parameter must be a type that is assignable to the resource set specified by the resourceSet parameter." A string like "The ResourceProperty of the ResourceAssociationEnds cannot both be null." A string like "When the ResourceAssociationSet is bidirectional, IDataServiceMetadataProvider.GetResourceAssociationSet() must return the same ResourceAssociationSet when call from both ends." A string like "The ends of a ResourceAssociationSet cannot both have the same ResourceType and ResourceProperty values. If this is a self-referencing association, the ResourceAssociationSet must be unidirectional with the ResourceProperty on one of the ends set to null." A string like "There is no HTTP method specified by the host." A string like "The RequestHeaders property of the data service host cannot be null." A string like "The ResponseHeaders property of the data service host cannot be null." A string like "The data service cannot access the requested information. To be able to access this information, the process that hosts the data service must implement the IDataServiceHost2 interface." A string like "IDataServiceStreamProvider.GetWriteStream() must return a valid writable stream." A string like "IDataServiceStreamProvider.GetReadStream() must return a valid readable stream." A string like "The ability of the data service to return row count information is disabled. To enable this functionality, set the DataServiceConfiguration.AcceptCountRequests property to true." A string like "The ability to use the $select query option to define a projection in a data service query is disabled. To enable this functionality, set the DataServiceConfiguration. AcceptProjectionRequests property to true." A string like "Server paging cannot be used when the MaxProtocolVersion of the data service is set to DataServiceProtocolVersion.V1." A string like "An error occurred while processing this request." A string like "Unsupported media type requested." A string like "Value cannot be null or empty." A string like "Error in processing request - there is no request body available." A string like "Error in processing request - IDataServiceHost.ResponseStream cannot be null." A string like "The request is not valid. To set a value to null, the URI must refer to a property whose type is not of value type." A string like "The data source must implement IUpdatable, IDataServiceUpdateProvider or IDataServiceUpdateProvider2 to support updates." A string like "The data source must implement IDataServiceUpdateProvider or IDataServiceUpdateProvider2 to support updates." A string like "To support service actions, the MaxProtocolVersion of the data service must be set to DataServiceProtocolVersion.V3 or above." A string like "To support service actions, the data service must implement IServiceProvider.GetService() to return an implementation of IDataServiceUpdateProvider2 or the data source must implement IDataServiceUpdateProvider2." A string like "To support named streams, the MaxProtocolVersion of the data service must be set to DataServiceProtocolVersion.V3 or above." A string like "To support streaming, the data service must implement IServiceProvider.GetService() to return an implementation of IDataServiceStreamProvider or the data source must implement IDataServiceStreamProvider." A string like "To support named streams, the data service must implement IServiceProvider.GetService() to return an implementation of IDataServiceStreamProvider2 or the data source must implement IDataServiceStreamProvider2." A string like "The method 'IDataServiceStreamProvider.GetStreamContentType' must not return a null or empty string." A string like "The method 'IDataServiceStreamProvider.GetReadStreamUri' must return an absolute Uri or null." A string like "The method 'IDataServiceStreamProvider.GetStreamETag' returned an entity tag with invalid format." A string like "The method 'IDataServiceStreamProvider.ResolveType' must return a valid resource type name." A string like "Recursion reached allowed limit." A string like "$value must be only specified for primitive values. Please make sure that property is a primitive type property." A string like "$value must not be specified for spatial values. " A string like "Error processing request stream. The URI specified is not valid." A string like "Error processing request stream. Type information is not specified for open property." A string like "Error processing request stream. Deep updates are not supported in PUT, MERGE, or PATCH operations." A string like "Error processing request stream. Type information must be specified for types that take part in inheritance." A string like "Error processing request stream. In PUT operations, URI must be specified for binding operations." A string like "Error processing request stream. In batch mode, a resource can be cross-referenced only for bind/unbind operations." A string like "Missing URI element. For link operations, URI element must be specified." A string like "Error processing request stream. Binding to new entities is not supported in PUT operations." A string like "Collection properties of a collection type are not supported." A string like "The value of a collection property can only be enumerated once." A string like "Error processing request stream. The request should be a valid top-level resource object." A string like "Error processing request stream. '__metadata' element must be a valid JSON object." A string like "Error processing request stream. The 'type' element value in '__metadata' must be of string type." A string like "Error processing request stream. 'uri' element value must be of string type." A string like "Error processing request stream. JSON text specified is not valid." A string like "Error processing request stream. Missing ',' between array elements." A string like "Error processing request stream. In JSON, every object is made up of name/value pairs and the name must be specified." A string like "Error processing request stream. In JSON, every object is made up of name/value pairs and every name/value pair must be separated by ','." A string like "Error processing request stream. Either an extra comma is specified at the end or name is an empty string." A string like "Error processing request stream. Unrecognized escape sequence found in JSON string." A string like "Error processing request stream. Exactly one URI must be specified for link operations." A string like "The specified $expand option is too deep." A string like "Internal Server Error. ResolveResource returned null value. Please contact the provider." A string like "Internal Server Error. CreateResource returned null value. Please contact the provider." A string like "Internal Server Error. ResetResource returned null value. Please contact the provider." A string like "The request URI and service URI cannot be modified after the OnStartProcessingRequest method has returned." A string like "The query string of the request URI cannot be modified in the OnStartProcessingRequest method." A string like "The service URI cannot be modified when processing a request inside a $batch payload. The ProcessRequestArgs.IsBatchOperation property will be true when inside a $batch payload."