QueryInterceptorAttribute Class

 
System_CAPS_noteNote

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

The QueryInterceptorAttribute on a method annotates it as a query interceptor on the specified entity set.

Namespace:   System.Data.Services
Assembly:  System.Data.Services (in System.Data.Services.dll)

System.Object
  System.Attribute
    System.Data.Services.QueryInterceptorAttribute

[AttributeUsageAttribute(AttributeTargets.Method, AllowMultiple = true, 
	Inherited = true)]
public sealed class QueryInterceptorAttribute : Attribute

NameDescription
System_CAPS_pubmethodQueryInterceptorAttribute(String)

Initializes a new instance of the QueryInterceptorAttribute class for the entity set specified by the entitySetName parameter.

NameDescription
System_CAPS_pubpropertyEntitySetName

Gets the name of the entity set that contains the entity to which the interceptor applies.

System_CAPS_pubpropertyTypeId

When implemented in a derived class, gets a unique identifier for this Attribute.(Inherited from Attribute.)

NameDescription
System_CAPS_pubmethodEquals(Object)

This API supports the product infrastructure and is not intended to be used directly from your code. Returns a value that indicates whether this instance is equal to a specified object.(Inherited from Attribute.)

System_CAPS_pubmethodGetHashCode()

Returns the hash code for this instance.(Inherited from Attribute.)

System_CAPS_pubmethodGetType()

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_pubmethodIsDefaultAttribute()

When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.(Inherited from Attribute.)

System_CAPS_pubmethodMatch(Object)

When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.(Inherited from Attribute.)

System_CAPS_pubmethodToString()

Returns a string that represents the current object.(Inherited from Object.)

NameDescription
System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Maps a set of names to a corresponding set of dispatch identifiers.(Inherited from Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Retrieves the type information for an object, which can be used to get the type information for an interface.(Inherited from Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.GetTypeInfoCount(UInt32)

Retrieves the number of type information interfaces that an object provides (either 0 or 1).(Inherited from Attribute.)

System_CAPS_pubinterfaceSystem_CAPS_privmethod_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Provides access to properties and methods exposed by an object.(Inherited from Attribute.)

Entity set-level authorization and validation is implemented by methods annotated with the QueryInterceptorAttribute. WCF Data Servicess do not implement security policies but instead provide the infrastructure required for service developers to write their own security rules and business validation.

Entity set access control and validation is enabled through query operations by using query composition. To control entity-based access, implement a method-per-entity set according to the following rules:

The method must have public scope and be annotated with the QueryInterceptorAttribute, taking the name of a entity set as a parameter.

The method must accept no parameters.

The method must return an expression of type Expression<Func<T, bool>> that is the filter to be composed for the entity set.

The following example controls access to the Customers entity set. Each Customer can only see Orders associated with that Customer.

[QueryInterceptor("Orders")]
public Expression<Func<Order, bool>> FilterOrders() 
{
    return o => o.Customer.Name == /* Current principal name. */;
} 

// Insures that the user accessing the customer(s) has the appropriate
// rights as defined in the QueryRules object to access the customer
// resource(s).

[QueryInterceptor ("Customers")]
public Expression<Func<Customer, bool>> FilterCustomers() 
{
  return c => c.Name == /* Current principal name. */ &&
              this.CurrentDataSource.QueryRules.Contains(
                rule => rule.Name == c.Name &&
                        rule.CustomerAllowedToQuery == true
              );
}

.NET Framework
Available since 3.5

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
Show: