Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

474
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda