Anstatt mein Datenbankmodell verfügbar zu machen, versuche ich, meine WebAPI-Endpunkte mit DTO-Entsprechungen zu arbeiten. In meinem WebAPIConfig aus der Global.asax-Datei referenziert ich habe:OData Web API Patch Anforderung mit DTO
builder.EntitySet<ProductDTO>("Products");
builder.EntitySet<Product>("ProductsDB");
Wo Produkt ein zusätzliches Feld hat die ProductDTO nicht verfügt.
Mein Patch-Anforderung ist derzeit:
[AcceptVerbs("PATCH", "MERGE")]
public IHttpActionResult Patch([FromODataUri] int key, Delta<ProductDTO> patch)
{
Das sehe ich im Wesentlichen muss ich meine konvertieren Delta<ProductDTO>
in ein Delta<Product>
aber ich kann keine Methoden in der Delta-Klasse, die mir erlauben würde, die ihr zugrunde liegenden EntityType einstellen Beispiel.
Hat jemand einen Rat?
Dank für Ihre Antwort danken. Ich kann sehen, wie dieses Beispiel funktioniert, aber es scheint, dass "Delta.GetChangedPropertyNames" unabhängig von den Umständen alle Eigenschaften in meinem DTO zurückgibt, egal ob sie sich geändert haben oder nicht. Können Sie helfen? Funktioniert das so für dich? – user2363071
Ich bin nicht sicher, ob der obige Kommentar Sie korrekt referenziert oder nicht, also werde ich es hier erneut versuchen ... – user2363071
Ich habe festgestellt, dass Delta.GetChangedPropertyNames alle Eigenschaften für mein DTO enthält, weil ich das Objekt mit erstelle mein Kunde, ohne ihn aus dem Dienst zu extrahieren und somit seinen Kontext zu verfolgen. Vielen Dank. – user2363071