Konfigurieren des Datendiensts (WCF Data Services)

Mit WCF Data Services können Sie Datendienste erstellen, die Open Data Protocol (OData)-Feeds verfügbar machen. Die Daten dieser Feeds können aus einer Vielzahl von Datenquellen stammen. WCF Data Services macht diese Daten mithilfe von Datenanbietern als OData-Feed verfügbar. 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 Datendienstanbieter (WCF Data Services).

In WCF Data Services ist ein Datendienst eine Klasse, die von der DataService<T>-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<T> 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 für die InitializeService-Methode angegeben, die vom Datendienst implementiert wird, wie im folgenden Northwind-Dienst, den Sie beim Ausführen des Schnellstarts erstellen:

Public Class Northwind
    Inherits DataService(Of NorthwindEntities)

    ' This method is called only once to initialize service-wide policies.
    Public Shared Sub InitializeService(ByVal config As DataServiceConfiguration)
        ' Grant only the rights needed to support the client application.
        config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead _
             Or EntitySetRights.WriteMerge _
             Or EntitySetRights.WriteReplace)
        config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead _
            Or EntitySetRights.AllWrite)
        config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead)
    End Sub
End Class
public class Northwind : DataService<NorthwindEntities>
{
    // This method is called only once to initialize service-wide policies.
    public static void InitializeService(DataServiceConfiguration config)
    {
        // Grant only the rights needed to support the client application.
        config.SetEntitySetAccessRule("Orders", EntitySetRights.AllRead
             | EntitySetRights.WriteMerge
             | EntitySetRights.WriteReplace);
        config.SetEntitySetAccessRule("Order_Details", EntitySetRights.AllRead
            | EntitySetRights.AllWrite);
        config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead);
        config.DataServiceBehavior.MaxProtocolVersion =
            System.Data.Services.Common.DataServiceProtocolVersion.V3;
    }
}

Konfigurationseinstellungen des Datendiensts

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

Member

Verhalten

AcceptAnyAllRequests

Ermöglicht das Deaktivieren der Unterstützung für Abfragen, die die Operatoren any und all enthalten.

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.

AcceptSpatialLiteralsInQuery

Ermöglicht das Deaktivieren der Unterstützung für die Angabe von räumlichen Literalwerten in einem Abfrage-URI.

AnnotationsBuilder

Ermöglicht das Anwenden von Vokabularen auf das Datenmodell mithilfe von Anmerkungen. Die AnnotationsBuilder-Eigenschaft gibt einen Delegaten zurück, mit dem Sie eine oder mehrere Modellanmerkungen als Auflistung von IEdmModel-Instanzen für das Datenmodell angeben können, das als IEdmModel-Instanz an den Delegaten übergeben wird. Weitere Informationen finden Sie im Beitrag Vokabulare in WCF Data Services.

DisableValidationOnMetadataWrite

Ermöglicht das Deaktivieren der Validierung des Datenmodells, bevor der Dienst auf eine Anfrage an den $metadata-Endpunkt antwortet.

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.

IncludeAssociationLinksInResponse

Ermöglicht es anzugeben, ob Linkelemente, die speziell die Beziehung zwischen Entitäten adressieren, (auch als Zuordnungen bezeichnet) in der Antwort vom Datendienst enthalten sein sollen. Zuordnungen werden mit dem $links-Operator adressiert. Weitere Informationen finden Sie unter 3.2. Adressieren von Links zwischen Einträgen im OData-Protokoll. Der Datendienst gibt immer Linkelemente zurück, die verknüpfte Entitäten adressieren, selbst wenn IncludeAssociationLinksInResponse den Wert false besitzt.

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, die Größe einer Antwort durch Beschränken der Anzahl verknüpfter Entitäten in einer einzelnen Anforderung mit dem $expand-Abfrageoperator einzuschränken. Weitere Informationen finden Sie unter finden Sie unter OData: URI-Konventionen und Laden von verzögertem Inhalt (WCF Data Services).

MaxExpandDepth

Ermöglicht es Ihnen, die Größe einer Antwort durch das Beschränken der Diagrammtiefe verknüpfter Entitäten in einer einzelnen Anforderung mit dem $expand-Abfrageoperator einzuschränken. Weitere Informationen finden Sie unter finden Sie 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 Datendienst-Versionskontrolle (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).

SetServiceActionAccessRule(String, ServiceActionRights)

Legt die Zugriffsrechte für Dienstaktionen fest, die für den Datendienst definiert sind. Weitere Informationen finden Sie unter Verwenden von OData-Aktionen zum Implementieren des serverseitigen Verhaltens. Ein Sternchenwert (*) kann für den name-Parameter angegeben werden, um den Zugriff für alle Dienstaktionen auf die gleiche Ebene festzulegen. Es wird empfohlen, den Zugriff auf Dienstaktionen 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.

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 name-Parameter 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 Vorgehensweise: Aktivieren des Zugriffs auf den Datendienst (WCF Data Services).

URI-Pfad und Abfrageoption

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

nicht verfügbar

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/$value1

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')/$value2

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 3 des OData-Protokolls oder eine höhere Version erforderlich:

  • Unterstützung für den Einschluss von Beziehungslinkelementen in den Antwortfeed.

  • Unterstützung für die Abfrageoperatoren any und all.

  • Unterstützung für die Definition von Dienstaktionen und -funktionen.

  • Unterstützung für räumliche Datentypen.

  • Unterstützung für Vokabulare durch Definieren von Datenmodellanmerkungen.

  • Unterstützung für das Deaktivieren der Datenmodellvalidierung für eine $metadata-Endpunktanforderung.

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

  • Die Unterstützung für count-Anforderungen und Abfrageprojektion erfordert Version 2.0 oder höher des OData-Protokolls.

  • Die Unterstützung für die $select-Abfrageoption für Projektionen erfordert Version 2.0 oder höher des OData-Protokolls.

Weitere Informationen finden Sie unter Datendienst-Versionskontrolle (WCF Data Services).

Siehe auch

Konzepte

Hosten des Datendiensts (WCF Data Services)

Andere Ressourcen

Datendienst (WCF Data Services)