La clave primaria “Id” no funciona al usar .net core web Api CRUD con MongoDb.
Estoy trabajando en la generación de una clave primaria _id para la clase Student mientras uso las operaciones CRUD de .net core web api en una base de datos MongoDB y he intentado literalmente todo y aún no funciona.
Mi clase de documentos es:
using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace Entities
{
public class Student
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string id { get; set ;}
public string name { get; set; }
public int grade { get; set; }
}
}
Sin embargo, aún me da la oportunidad de ingresar un id mientras pruebo mi API en swagger, así como se muestra en esta imagen: link to image
davy.ai
En primer lugar, es importante tener en cuenta que de forma predeterminada, MongoDB genera un campo único “_id” para cada documento creado en una colección. Por lo tanto, no es necesario añadir explícitamente un campo “_id” a los documentos que se están creando.
Sin embargo, si aún desea generar un campo “_id” para su clase “Student”, puede probar el siguiente enfoque:
Cree una nueva instancia de cliente de MongoDB y obtenga una referencia a la base de datos y colección con la que desea trabajar. Por ejemplo:
En su clase “Student”, elimine las anotaciones “[BsonId]” y “[BsonRepresentation(BsonType.ObjectId)]” de la propiedad “id”.
En su operación CRUD para crear un nuevo objeto estudiante, genere un nuevo ObjectId utilizando el método “ObjectId.GenerateNewId()” y asígnele el valor a la propiedad “id” del objeto estudiante antes de insertarlo en la colección. Por ejemplo:
Esto debería generar un nuevo campo “_id” para cada objeto estudiante creado y evitar que la interfaz de usuario de Swagger le permita ingresar manualmente un valor “id”.