2016-12-19 3 views
0

Mit dem https://github.com/scott-mcdonald/JsonApiFramework RahmenKann nicht verwandte Ressource erhält JsonApiFramework mit

ich folgende PATCH aus meiner UI bin das Senden:

{"data":{"id":"4221fe2f-ca7b-425d-b45a-a09f4936a22b","attributes":{"contact-trade-name":"asdad","contact-name":"aasd","contact-phone":"asdad","contact-email":"[email protected]","created-date":"2016-12-19T14:07:59.833","status":"AwaitingBillData"},"relationships":{"share-user":{"data":{"type":"users","id":"5078b2ee-2348-44f5-95a0-3c14c2ad2b1d"}}},"type":"jobs"}}

Und auf meinem Server i folgenden tue:

using (var documentContext = new DocumentContext(HttpContext.Current.Request.Url, document)) { var job = documentContext.GetResource<Job>(); var relationships = documentContext.GetResourceRelationships(job); var shareUserRel = relationships["share-user"]; var shareUser = documentContext.GetRelatedResource<Data.ServiceModel.User>(shareUserRel); }

jedoch shareUser ist immer null

shareUserRel hat folgendes, wenn ich es prüfen:

{ResourceIdentifier [type=users id=5078b2ee-2348-44f5-95a0-3c14c2ad2b1d]}

ob das hilft.

Gibt es irgendetwas, das offensichtlich ist, dass ich falsch machen könnte?

Antwort

1

das JSON-Format: api Dokument zur besseren Lesbarkeit, sieht es wie folgt aus:

{ 
    "data": { 
    "type": "jobs" 
    "id": "4221fe2f-ca7b-425d-b45a-a09f4936a22b", 
    "attributes": { 
     "contact-trade-name": "asdad", 
     "contact-name": "aasd", 
     "contact-phone": "asdad", 
     "contact-email": "[email protected]", 
     "created-date": "2016-12-19T14:07:59.833", 
     "status": "AwaitingBillData" 
    }, 
    "relationships": { 
     "share-user": { 
     "data": { 
      "type": "users", 
      "id": "5078b2ee-2348-44f5-95a0-3c14c2ad2b1d" 
     } 
     } 
    } 
    } 
} 

Der Grund GetRelatedResourcenull Rückkehr ist das Dokument Zusammenhang fragen die tatsächliche enthalten Benutzer Ressource in dem Dokument zurückzukehren die existiert nicht im Dokument.

Wenn ein Client diesen Typ von json: api-Dokument in einem PATCH sendet, weist er den Server an, die Jobressource mit den angegebenen Attributen zu aktualisieren und diese Jobressource einer vorhandenen Benutzerressource zuzuordnen, die in der to-one angegeben ist Ressourcenverknüpfung

Etwas mehr richtig, wenn Sie die Beziehung Objekt in Ihrem Beispiel haben, ist die folgende:

if (shareUserRel.IsResourceLinkageNullOrEmpty()) 
{ 
    // Clear any linkage between the job resource and any current user 
    ... 
} 
else 
{ 
    var shareUserResourceIdentifier = shareUserRel.GetToOneResourceLinkage(); 
    // Create linkage between the job resource and existing user identified 
    // by shareUserResourceIdentifier 
    ... 
} 

Nun, wie Sie behandeln die ‚...‘ auf Ihrer Datenschicht abhängt.

+0

Danke @scott - Punkt wie immer :) – iwayneo

Verwandte Themen