Question

J'ai une opération de service de la forme:

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

avec la règle d'accès

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

Quand j'accéder à cette opération de service via un navigateur Web, il expose les données, mais pas dans les flux et entrées (format AtomPub) et ni ne m'a laissé utiliser les options de requête de base comme $ haut, $ orderby, etc se plaignant que ces ' ne peut pas être appliquée à la ressource demandée. Je l'ai adapté à toutes les exigences spécifiées http://msdn.microsoft.com/en -nous / bibliothèque / cc668788.aspx mais sans succès. Toute aide serait appréciée. Merci.

Était-ce utile?

La solution

Si le BussinesObject est pas reconnu comme entité, l'opération de service sera traitée comme si le retour IEnumerable au lieu. Pour l'interrogation au travail de l'opération de service doit retourner IQueryable où T est un type d'entité. Si l'on suppose soit EF ou fournisseur de réflexion d'un type d'entité est un type qui a une propriété clé (soit par heuristique ou par DataServiceKey attribut) et pour lequel il y a une propriété sur la classe de contexte de type IQueryable. Si le BussinesObject est pas une entité, WCF Data Services ne peut pas supporter des requêtes sur le résultat de l'opération de service. Il y a plusieurs raisons, pour ne citer que celui-ci: pour sérialiser la réponse chaque objet doit avoir une URL unique (il est atome: id), pour être en mesure de générer une URL unique l'objet doit avoir des propriétés clés. Et les propriétés clés ne peuvent être définies sur les entités.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top