Domanda

Quando si utilizza client di ADO.Net Data Services di aggiornare un'entità chiamando il LoadProperty:

ctx.BeginLoadProperty(this, "Owner", (IAsyncResult ar) => ...

Si genera un errore sul server se la proprietà è null

  

Errore: Eccezione generata: System.Data.Services.DataServiceException:   Risorsa non trovata per il segmento 'proprietario'. a   System.Data.Services.RequestDescription.GetSingleResultFromEnumerable (SegmentInfo   segmentInfo) a   System.Data.Services.DataService1.CompareETagAndWriteResponse (RequestDescription   descrizione, ContentFormat responseFormat, IDataService Dataservice)
  a   System.Data.Services.DataService1.SerializeResponseBody (RequestDescription   descrizione, IDataService Dataservice) a   System.Data.Services.DataService1.HandleNonBatchRequest (RequestDescription   Descrizione) a System.Data.Services.DataService`1.HandleRequest ()

Il problema è che il cliente non sa se la proprietà è Vehicle o semplicemente non è stato ancora popolato. La proprietà proprietario è un collegamento da una Customer ad un <=>.

Tutte le idee che cosa c'è di sbagliato?

Grazie

È stato utile?

Soluzione

Interrogazione su chiavi primarie genera un'eccezione quando la chiave non esiste. La soluzione è aggiungere una vera espressione manichino nella condizione (per esempio: 1 == 1 && item.Id == XXX)

.

Senza l'espressione fittizia richiesta ADO.NET è:

  

http: //localhost//test.svc/Role(XXX)

Con la condizione fittizia, la richiesta è:

  

http: //localhost//test.svc/Role()?$filter=true e (Id eq 1)

Il comportamento atteso (null restituiti) è corretta nel secondo caso.

Altri suggerimenti

IgnoreResourceNotFoundException proprietà del contesto di servizio true:

svc.IgnoreResourceNotFoundException = true;

Ho ricevuto anche una "risorsa non trovato per il segmento 'Proprietà'" errore. La mia sembra essere che nella clausola in cui sto cercando da chiave primaria. Ho trovato alcune risorse che dicono che genera un errore (anche quando si utilizza FirstOrDefault ()) quando si utilizza una chiave primaria che non esiste (al contrario di altri in cui le clausole che proprio non forniscono risultati). Direi una cosa simile sta accadendo a te stesso.

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