2017-12-10 2 views
0

Ich benutze Entity Framework 6 und OData. Ich habe ein Modell A mit mehreren Nav-Eigenschaften für andere Modelle, zum Beispiel Modell B. Für ein Get möchte ich in der Lage sein, A aufzurufen, und auf B zu erweitern (das kann ich erfolgreich machen). Das Schwierige daran ist, dass ich jetzt in der Lage sein werde, Patch aufzurufen, und innerhalb des Körpers alle Daten für A sowie die verschachtelten Daten für B einzufügen.Wie setze ich eine Entity als Navigationseigenschaft (Get) und kann auch ein komplexes Objekt darin einfügen (Patch, Put)

Ich weiß, dass EF keine Daten in virtuellen Daten akzeptiert, also dachte ich, ich könnte diese Daten in unserer Anwendung ziehen und diese Felder manuell löschen, bevor Sie mit EF speichern. Das wäre großartig.

jedoch der einzige Weg, ich OData bekommen kann mein Subobjekt zu akzeptieren ist durch die Angabe, dass die Art des Objektes B ein komplexes Objekt ist, indem Sie diese Zeile mit dem Modellbauer Hinzufügen ...

builder.ComplexType<B>(); 

Ich kann dann verschachtelte Daten dieses Typs auf Patch weitergeben, aber jetzt funktioniert mein Get nicht, weil es besagt, dass Sie nicht zu komplexen Typen, nur zu Navigationstypen, expandieren können.

Also, es funktioniert nur auf die eine oder andere Weise. Irgendwelche Ideen, wie ich sowas für beide Situationen gleichzeitig erreichen kann?

Danke!

Antwort

0

Sie können die $ref verwenden, um die Verbindung zwischen Entitäten einzurichten.

Zum Beispiel:

  1. POST ~/As ein neues A-As, aus der Antwort zu erstellen, können Sie den Speicherort Id erhalten. So können Sie den Schlüssel des neuen A

  2. POST ~/Bs bekommen einen neuen B-Bs, aus der Antwort zu erstellen, können Sie den Speicherort Id erhalten. Sie können also die ID (uri) von B bekommen.

  3. Dann können Sie die $ref verwenden, um eine Verbindung zwischen dem neuen A und dem neuen B herzustellen. Für $ ref, können Sie auf den Beispielcode here verweisen.

Verwandte Themen