Azure Table Storage e l’operatore FirstOrDefault

Oggi ho perso l'intero pomeriggio a lottare contro questo problema, quindi voglio condividere la cosa in modo da evitare ad altri di spaccarsi la testa sulla stessa cosa.
Stavo eseguendo una query semplice sul Table Storage di Azure utilizzando PartitionKey e RowKey per recuperare una specifica entità in una tabella specifica (es.: http://127.0.0.1:10002/devstoreaccount1/Spaceship (PartitionKey = '380 ',RowKey = '1234 ')).
Durante i test, il primo scenario era dove non esisteva entità con PK e RK date e ho usato una semplice query che termina con l'operatore FirstOrDefault tipo:

TableRepository.FindWhere (p => p.PartitionKey == entity.Spaceship.CountryCode.ToString () & &
. p.RowKey == entity.SerialNumber) FirstOrDefault ();

e mi aspettavo u null, ma in realtà ho cominciato a ricevere errori 404 col seguente dettaglio: 

<error xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"> 
  <code>ResourceNotFound</code> 
  <message xml:lang="en-US">The specified resource does not exist.</message> 
</error>
Dopo diverse ore alle prese con vari test ho scoperto queste “Perle di Saggezza Azure”:
- Internet Explorer non può essere utilizzato per eseguire query direttamente su Table Storage
- È necessario impostare IgnoreResourceNotFoundException = true nel TableServiceContext per ricevere null quando un'entità non viene trovata, invece di ricevere un errore 404

posted @ martedì 29 novembre 2011 10:56

Print
Comments have been closed on this topic.