Domanda

Ho un operazione di servizio della forma:

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

con regola di accesso

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

Quando accedo questa operazione servizio tramite un browser web, espone i dati, ma non nei mangimi e le voci (formato AtomPub) e né si mi ha lasciato usare opzioni di query di base come $ superiore, $ orderby, ecc lamentando che questi ' non può essere applicato alla risorsa richiesta'. Ho abbinato tutti i requisiti specificati in http://msdn.microsoft.com/en -us / library / cc668788.aspx ma senza alcun successo. Qualsiasi aiuto sarà apprezzato. Grazie.

È stato utile?

Soluzione

Se il BussinesObject non viene riconosciuto come entità, l'operazione del servizio sarà trattato come se tornare IEnumerable invece. Per l'interrogazione di lavoro l'operazione servizio deve ritorno IQueryable dove T è un tipo di entità. Supponendo sia EF o erogatori Reflection un tipo di entità è un tipo che ha una struttura tasto (con euristica o tramite DataServiceKey attributo) e per le quali c'è una proprietà sulla classe contesto di tipo IQueryable. Se il BussinesObject non è un'entità, WCF Data Services non può supporta le query sul risultato del funzionamento del servizio. Ci sono molte ragioni, per citarne solo uno: al fine di serializzare la risposta ogni oggetto deve avere un URL univoco (è atomo: id), per essere in grado di generare un URL univoco l'oggetto deve avere proprietà chiave. Ed proprietà chiave possono essere definite solo su entità.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top