Konfigurieren des Datendiensts (WCF Data Services)

Mit WCF Data Services können Sie Datendienste erstellen, die Open Data Protocol (OData) -Feeds verfügbar machen. Daten in diesen Feeds können aus verschiedensten Datenquellen stammen. WCF Data Services verwendet Datenanbieter, um diese Daten als OData -Feed verfügbar zu machen. Zu diesen Anbietern zählen ein Entity Framework -Anbieter, ein Reflektionsanbieter und ein Schnittstellensatz für benutzerdefinierte Datendienstanbieter. Die Anbieterimplementierung definiert das Datenmodell für den Dienst. Weitere Informationen finden Sie unter Datendiensteanbieter (WCF Data Services).

In WCF Data Services ist ein Datendienst eine Klasse, die von der DataService-Klasse erbt. Dabei ist der Typ des Datendiensts der Entitätscontainer des Datenmodells. Dieser Entitätscontainer verfügt über mindestens eine Eigenschaft, die einen IQueryable zurückgibt und die für den Zugriff auf Entitätenmengen im Datenmodell verwendet wird.

Das Verhalten des Datendiensts wird durch die Member der DataServiceConfiguration-Klasse definiert, und durch Member der DataServiceBehavior-Klasse, auf die von der DataServiceBehavior-Eigenschaft der DataServiceConfiguration-Klasse zugegriffen wird. Die DataServiceConfiguration-Klasse wird wie in der folgenden Implementierung eines Northwind-Datendiensts für die InitializeService-Methode angegeben, die vom Datendienst implementiert wird:

' This method is called only once to initialize service-wide policies.
Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
    ' Set the access rules of feeds exposed by the data service, which is
    ' based on the requirements of client applications.
    config.SetEntitySetAccessRule("Customers", EntitySetRights.ReadSingle)
    config.SetEntitySetAccessRule("Employees", EntitySetRights.ReadSingle)
    config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _
        And EntitySetRights.WriteAppend _
        And EntitySetRights.WriteMerge)
    config.SetEntitySetAccessRule("Order_Details", EntitySetRights.All)
    config.SetEntitySetAccessRule("Products", EntitySetRights.ReadMultiple)

    ' Set page size defaults for the data service.
    config.SetEntitySetPageSize("Orders", 20)
    config.SetEntitySetPageSize("Order_Details", 50)
    config.SetEntitySetPageSize("Products", 50)

    ' Paging requires v2 of the OData protocol.
    config.DataServiceBehavior.MaxProtocolVersion = _
        System.Data.Services.Common.DataServiceProtocolVersion.V2
End Sub
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
    // Set the access rules of feeds exposed by the data service, which is
    // based on the requirements of client applications.
    config.SetEntitySetAccessRule("Customers", EntitySetRights.ReadSingle);
    config.SetEntitySetAccessRule("Employees", EntitySetRights.ReadSingle);
    config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead 
        & EntitySetRights.WriteAppend
        & EntitySetRights.WriteMerge);
    config.SetEntitySetAccessRule("Order_Details", EntitySetRights.All);
    config.SetEntitySetAccessRule("Products", EntitySetRights.ReadMultiple);

    // Set page size defaults for the data service.
    config.SetEntitySetPageSize("Orders", 20);
    config.SetEntitySetPageSize("Order_Details", 50);
    config.SetEntitySetPageSize("Products", 50);

    // Paging requires v2 of the OData protocol.
    config.DataServiceBehavior.MaxProtocolVersion =
        System.Data.Services.Common.DataServiceProtocolVersion.V2;
}

Konfigurationseinstellungen des Datendiensts

Mit der DataServiceConfiguration-Klasse können Sie das folgende Datendienstverhalten angeben:

Member Verhalten

AcceptCountRequests

Ermöglicht das Deaktivieren von Count-Anforderungen, die mit dem $count-Pfadsegment und der $inlinecount-Abfrageoption an den Datendienst gesendet werden. Weitere Informationen finden Sie unter OData: URI-Konventionen.

AcceptProjectionRequests

Ermöglicht das Deaktivieren der Unterstützung der Datenprojektion in Anforderungen, die mit der $select-Abfrageoption an den Datendienst gesendet werden. Weitere Informationen finden Sie unter OData: URI-Konventionen.

EnableTypeAccess

Ermöglicht das Verfügbarmachen eines Datentyps in den Metadaten für einen dynamischen Metadatenanbieter, der mithilfe der IDataServiceMetadataProvider-Schnittstelle definiert wird.

EnableTypeConversion

Ermöglicht es Ihnen anzugeben, ob die Datendienst-Runtime den in der Nutzlast enthaltenen Typ in den in der Anforderung angegebenen tatsächlichen Eigenschaftstyp konvertieren soll.

InvokeInterceptorsOnLinkDelete

Ermöglicht es Ihnen anzugeben, ob registrierte Change-Interceptors für die verknüpften Entitäten aufgerufen werden, wenn ein Beziehungslink zwischen zwei Entitäten gelöscht wird.

MaxBatchCount

Ermöglicht es Ihnen, die Anzahl von Changesets und Abfragevorgängen einzuschränken, die in einem einzelnen Batch zulässig sind. Weitere Informationen finden Sie unter OData: Batch und Batchverarbeitungsvorgänge (WCF Data Services).

MaxChangesetCount

Ermöglicht es, die in einem einzigen Änderungssatz zulässige Anzahl von Änderungen zu beschränken. Weitere Informationen finden Sie unter Gewusst wie Aktivieren von Paging für Datendienstergebnisse (WCF Data Services).

MaxExpandCount

Ermöglicht es Ihnen, die Größe einer Antwort einzuschränken, indem Sie die in einer einzelnen Anforderung zulässige Anzahl von verknüpften Entitäten mit dem $expand-Abfrageoperator einschränken. Weitere Informationen finden Sie unter unter OData: URI-Konventionen und Laden von verzögertem Inhalt (WCF Data Services).

MaxExpandDepth

Ermöglicht es Ihnen, die Größe einer Antwort einzuschränken, indem Sie die in einer einzelnen Anforderung zulässige Diagrammtiefe von verknüpften Entitäten mit dem $expand-Abfrageoperator einschränken. Weitere Informationen finden Sie unter unter OData: URI-Konventionen und Laden von verzögertem Inhalt (WCF Data Services).

MaxObjectCountOnInsert

Ermöglicht es Ihnen, die Anzahl einzufügender Entitäten einzuschränken, die in einer einzelnen POST-Anforderung enthalten sein können.

MaxProtocolVersion

Definiert die Version des Atom-Protokolls, das vom Datendienst verwendet wird. Wenn der Wert der MaxProtocolVersion auf einen Wert kleiner als der maximale Wert der DataServiceProtocolVersion festgelegt wird, sind die neuesten Funktionen von WCF Data Services nicht für Clients verfügbar, die auf den Datendienst zugreifen. Weitere Informationen finden Sie unter unter Verwenden mehrerer Versionen von WCF Data Services.

MaxResultsPerCollection

Ermöglicht es Ihnen, die Größe einer Antwort einzuschränken, indem Sie die Anzahl von Entitäten in jeder Entitätenmenge einschränken, die als Datenfeed zurückgegeben wird.

RegisterKnownType

Fügt der Liste der vom Datendienst erkannten Typen einen Datentyp hinzu.

SetEntitySetAccessRule

Legt die Zugriffsrechte für Entitätenmengenressourcen fest, die im Datendienst verfügbar sind. Ein Sternchenwert (*) kann für den Namensparameter angegeben werden, um den Zugriff für alle verbleibenden Entitätenmengen auf die gleiche Ebene festzulegen. Es wird empfohlen, den Zugriff auf Entitätenmengen so festzulegen, dass der Zugriff auf die für Clientanwendungen erforderlichen Datendienstressourcen mit minimalen Rechten bereitgestellt wird. Weitere Informationen finden Sie unter Sichern von WCF Data Services. Beispiele für die minimalen Zugriffsrechte, die für eine bestimmte URI- und HTTP-Aktion erforderlich sind, finden Sie in der Tabelle im Abschnitt Minimum Resource Access Requirements.

SetEntitySetPageSize

Legt die maximale Seitengröße für eine Entitätenmengenressource fest. Weitere Informationen finden Sie unter Gewusst wie Aktivieren von Paging für Datendienstergebnisse (WCF Data Services).

SetServiceOperationAccessRule

Legt die Zugriffsrechte für Dienstvorgänge fest, die für den Datendienst definiert sind. Weitere Informationen finden Sie unter Dienstvorgänge (WCF Data Services). Ein Sternchenwert (*) kann für den Namensparameter angegeben werden, um den Zugriff für alle Dienstvorgänge auf die gleiche Ebene festzulegen. Es wird empfohlen, den Zugriff auf Dienstvorgänge so festzulegen, dass der Zugriff auf die für Clientanwendungen erforderlichen Datendienstressourcen mit minimalen Rechten bereitgestellt wird. Weitere Informationen finden Sie unter Sichern von WCF Data Services.

UseVerboseErrors

Diese Konfigurationseigenschaft ermöglicht es Ihnen, die Problembehandlung in einem Datendienst zu vereinfachen, indem mehr Informationen in der Fehlerantwortnachricht zurückgegeben werden. Diese Option ist nicht für die Verwendung in einer Produktionsumgebung vorgesehen. Weitere Informationen finden Sie unter Entwickeln und Bereitstellen von WCF Data Services.

Minimale Ressourcenzugriffsrechte

In der folgenden Tabelle sind die minimalen Rechte für Entitätenmengen aufgelistet, die gewährt werden müssen, um einen bestimmten Vorgang auszuführen. Pfadbeispiele basieren auf dem Northwind-Datendienst, der beim Ausführen desSchnellstarts erstellt wird. Da sowohl die EntitySetRights-Enumeration als auch die ServiceOperationRights-Enumeration mit dem FlagsAttribute definiert werden, können Sie mithilfe eines logischen OR-Operators mehrere Berechtigungen für eine Entitätenmenge oder einen Vorgang angeben. Weitere Informationen finden Sie unter Gewusst wie: Aktivieren des Zugriffs auf den Datendienst (WCF Data Services).

Pfad/Aktion GET DELETE MERGE POST PUT

/Customers

ReadMultiple

Nicht unterstützt

Nicht unterstützt

WriteAppend

Nicht unterstützt

/Customers('ALFKI')

ReadSingle

ReadSingle und WriteDelete

ReadSingle und WriteMerge

n/v

ReadSingle und WriteReplace

/Customers('ALFKI')/Orders

Customers: ReadSingle

- und -

Orders: ReadMultiple

Nicht unterstützt

Nicht unterstützt

Customers: ReadSingle und WriteMerge oder WriteReplace

- und -

Orders : und WriteAppend

Nicht unterstützt

/Customers('ALFKI')/Orders(10643)

Customers: ReadSingle

- und -

Orders: ReadSingle

Customers: ReadSingle

- und -

Orders: ReadSingle und WriteDelete

Customers: ReadSingle

- und -

Orders: ReadSingle und WriteMerge

Nicht unterstützt

Customers: ReadSingle

- und -

Orders: ReadSingle und WriteReplace

/Orders(10643)/Customer

Customers: ReadSingle

- und -

Orders: ReadSingle

Customers: ReadSingle und WriteDelete

- und -

Orders: ReadSingle

Customers: ReadSingle und WriteMerge;

- und -

Orders: ReadSingle

Customers: WriteAppend

- und -

Orders: WriteAppend und ReadSingle

Nicht unterstützt

/Customers('ALFKI')/$links/Orders

Customers: ReadSingle

- und -

Orders: ReadMultiple

Nicht unterstützt

Nicht unterstützt

Customers: ReadSingle und WriteMerge oder WriteReplace

- und -

Orders: ReadSingle

Nicht unterstützt

/Customers('ALFKI')/$links/Orders(10643)

Customers: ReadSingle

- und -

Orders: ReadSingle

Customers: ReadSingle und WriteMerge oder WriteReplace

- und -

Orders: ReadSingle

Nicht unterstützt

Nicht unterstützt

Nicht unterstützt

/Orders(10643)/$links/Customer

Customers: ReadSingle

- und -

Orders: ReadSingle

Orders: ReadSingle und WriteMerge oder WriteReplace

Customers: ReadSingle

- und -

Orders: ReadSingle und WriteMerge

Nicht unterstützt

Customers: ReadSingle;

- und -

Orders: ReadSingle und WriteReplace

/Customers/$count

ReadMultiple

Nicht unterstützt

Nicht unterstützt

Nicht unterstützt

Nicht unterstützt

/Customers('ALFKI')/ContactName

ReadSingle

Nicht unterstützt

WriteMerge

Nicht unterstützt

WriteReplace

/Customers('ALFKI')/Address/StreetAddress/$value 1

ReadSingle

WriteDelete

Nicht unterstützt

Nicht unterstützt

Nicht unterstützt

/Customers('ALFKI')/ContactName/$value

ReadSingle

ReadSingle und WriteDelete

WriteMerge

Nicht unterstützt

WriteReplace

/Customers('ALFKI')/$value 2

ReadSingle

Nicht unterstützt

Nicht unterstützt

Nicht unterstützt

WriteReplace

/Customers?$select=Orders/*&$expand=Orders

Customers: ReadSingle

- und -

Orders: ReadMultiple

Nicht unterstützt

Nicht unterstützt

Customers: WriteAppend

Nicht unterstützt

/Customers('ALFKI')?$select=Orders/*&$expand=Orders

Customers: ReadSingle

- und -

Orders: ReadMultiple

Nicht unterstützt

Nicht unterstützt

Nicht unterstützt

Nicht unterstützt

1 In diesem Beispiel stellt Address eine komplexe Typeigenschaft der Customers-Entität dar, die über eine Eigenschaft mit dem Namen StreetAddress verfügt. In dem für die Northwind-Datendienste verwendeten Modell ist dieser komplexe Typ nicht explizit definiert. Wenn das Datenmodell mit dem Entity Framework -Anbieter definiert wird, können Sie einen solchen komplexen Typ mithilfe der Entity Data Model -Tools definieren. Weitere Informationen finden Sie unter How to: Create and Modify Complex Types (Entity Data Model Tools).

2 Dieser URI wird unterstützt, wenn eine ein Binary Large Object (BLOB) zurückgebende Eigenschaft als Medienressource definiert wird, die zu einer Entität gehört, die ein Medienlinkeintrag ist (in diesem Fall Customers). Weitere Informationen finden Sie unter Streaminganbieter (WCF Data Services).

Versionsanforderungen

Für die folgenden Konfigurationsverhalten eines Datendiensts ist Version 2 des OData -Protokolls oder eine höhere Version erforderlich:

  • Unterstützung von Count-Anforderungen

  • Unterstützung der $select-Abfrageoption für die Projektion

Weitere Informationen finden Sie unter Verwenden mehrerer Versionen von WCF Data Services.

Siehe auch

Konzepte

Hosten des Datendiensts (WCF Data Services)

Weitere Ressourcen

Definieren von WCF Data Services