Frage

Ich habe einen Service-Betrieb der Form:

[WebGet]
public IQueryable<BusinessObject> BusinessObjectsByType(string name)

mit Zugriffsregel

config.SetServiceOperationAccessRule("BusinessObjectsByType", ServiceOperationRights.All);

Wenn ich diesen Service-Betrieb über einen Webbrowser zugreifen, macht es die Daten aber nicht in Feeds und Einträgen (AtomPub-Format), und weder er läßt mich wie $ oben grundlegende Abfrageoptionen verwenden, $ orderby, etc, dass diese beschweren ' kann nicht auf die angeforderte Ressource‘angewendet werden. Ich habe alle Anforderungen an http://msdn.microsoft.com/en -US / library / cc668788.aspx aber ohne Erfolg. Jede Hilfe wird sehr geschätzt. Danke.

War es hilfreich?

Lösung

Wenn die BussinesObject nicht als Einheit erkannt wird, wird der Service-Betrieb, als ob Rückkehr IEnumerable stattdessen behandelt werden. Für die Abfrage zur Arbeit muss der Servicebetrieb zurückkehren IQueryable wobei T ein Entitätstyp ist. Unter der Annahme, entweder EF oder Reflexions Provider ein Entitätstyp ist ein Typ, der eine Schlüsseleigenschaft hat (entweder durch heuristische oder durch DataServiceKey Attribut) und für die es eine Eigenschaft auf der Kontextklasse vom Typ IQueryable. Wenn die BussinesObject keine Einheit ist, WCF Data Service kann keine Abfragen auf dem Ergebnis des Service-Betriebes unterstützen. Es gibt viele Gründe, um nur eins: um die Antwort jedes Objekt zu serialisiert eine eindeutige URL (es ist atom: id) haben muss, eine eindeutige URL zu erzeugen in der Lage sein die Objektschlüssel Eigenschaften aufweisen müssen. Und Schlüsseleigenschaften können nur auf Objekte definiert werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top