Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

470
Views
Azure C# Cosmos DB: falta la propiedad "id" cuando en realidad está presente

Estoy comenzando con CosmosDB ahora y me encuentro con el siguiente error cuando intento insertar algunos datos en la base de datos:

 The input content is invalid because the required properties - 'id; ' - are missing.

Entiendo que debe haber un campo de string llamado id en mi documento, pero el error persiste incluso después de agregar [JsonPropertyName("id")] como una anotación en el campo Id de mi objeto.

Aquí está la llamada a CosmosDB:

 var insertionResponse = await container.CreateItemAsync<Article>( item: article, partitionKey: new PartitionKey(article.Id.ToString()) );

Y aquí está la clase Article :

 public partial class Article { [JsonPropertyName("id")] public Guid Id { get; set; } public Guid CreatedBy { get; set; } public DateTime CreatedOn { get; set; } public string Title { get; set; } public string Body { get; set; } }

¿Alguna idea de por qué sucede esto?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

El problema se debe a que el código y el SDK utilizan diferentes bibliotecas JSON. Su código usa System.Text.Json , mientras que el SDK usa Newtonsoft.Json de forma predeterminada para la serialización/deserialización. Debido a esto, el SDK no comprende [JsonPropertyName("id")] y no serializa el documento correctamente.

2 Posibles soluciones:

  1. Utilice Newtonsoft.Json en lugar de System.Text.Json .

  2. Configure el SDK para usar System.Text.Json para la serialización/deserialización. Consulte este enlace para obtener más detalles: https://github.com/ealsur/ondotnet-cosmosdb/tree/master/src/episode1/customserializer .

ACTUALIZAR

Me encontré exactamente con el mismo problema no hace mucho tiempo y contacté a uno de los miembros del equipo SDK de Cosmos DB. Me señaló el enlace que compartí en el n. ° 2 anterior. La advertencia que mencionó es que usar System.Text.Json podría no funcionar si está usando consultas LINQ.

Otra alternativa (aunque no recomendada) es usar la versión 4 del SDK de Cosmos DB que usa System.Text.Json de manera predeterminada. Actualmente se encuentra en vista previa y, según los comentarios del equipo SDK, no hay ETA en la fecha de lanzamiento. Además, no todas las funciones que están disponibles en la versión 3 del SDK están disponibles en la versión 4 a partir de ahora (de ahí el comentario "no recomendado" anterior).

ACTUALIZAR 2

Hay una mejor implementación (que la que compartí anteriormente en el n.° 2) de usar System.Text.Json con v3 de Cosmos DB SDK. Consulte este enlace para obtener más detalles: https://github.com/Azure/azure-cosmos-dotnet-v3/tree/master/Microsoft.Azure.Cosmos.Samples/Usage/SystemTextJson .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!