Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

487
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda