2014-04-25 18 views
5

Invece di esporre il modello di database, sto cercando di far funzionare gli endpoint WebAPI con equivalenti DTO. Nel mio WebAPIConfig riferimento dal file Global.asax ho:Richiesta patch API Web OData con DTO

builder.EntitySet<ProductDTO>("Products"); 
builder.EntitySet<Product>("ProductsDB"); 

dove il prodotto ha un campo aggiuntivo che ProductDTO non ha.

La mia richiesta patch è attualmente:

[AcceptVerbs("PATCH", "MERGE")] 
public IHttpActionResult Patch([FromODataUri] int key, Delta<ProductDTO> patch) 
{ 

mi rendo conto che in sostanza ho bisogno di convertire il mio Delta<ProductDTO> in un Delta<Product> ma non riesco a vedere alcun metodi nella classe Delta che mi permettesse di impostare il suo EntityType sottostante esempio.

Qualcuno ha qualche consiglio?

risposta

0

Questa domanda è molto simile al tuo, si prega di fare riferimento a esso:

Microsoft Odata api through a ViewModel has problems in PATCH

+0

grazie per la risposta. Riesco a vedere come funziona questo esempio ma sembra che qualunque sia la circostanza, 'Delta.GetChangedPropertyNames' restituisce tutte le proprietà nel mio DTO se sono state modificate o meno. Siete in grado di aiutare? È così che funziona per te? – user2363071

+0

Non sono sicuro che il commento sopra ti abbia fatto riferimento correttamente o no, quindi proverò di nuovo qui ... – user2363071

+0

Mi sono reso conto che Delta.GetChangedPropertyNames contiene tutte le proprietà per il mio DTO perché sto creando l'oggetto con il mio cliente senza estrarlo dal servizio e quindi tracciare il suo contesto. Grazie. – user2363071