Docs Menu
Docs Home
/ /
/ / /

Escribe datos en MongoDB

Entity Framework Core le permite trabajar con datos en su aplicación sin ejecutar comandos de base de datos explícitamente. Puede insertar, actualizar o eliminar datos dentro de su aplicación y conservar esos cambios en MongoDB mediante... SaveChanges() o método SaveChangesAsync().

Cuando llama al método SaveChanges() o SaveChangesAsync(), el proveedor principal de EF detecta automáticamente cualquier cambio realizado en sus datos y ejecuta los comandos necesarios para actualizar la base de datos mediante la API de consulta de MongoDB.

En esta guía, puede ver ejemplos de cómo realizar operaciones de escritura comunes en una aplicación configurada para usar EF Core Provider.

Tip

Para aprender a configurar una aplicación para utilizar el proveedor EF Core, consulte Configurar el proveedor central de EF.

Los métodos SaveChanges() y SaveChangesAsync() son transaccionales por defecto. Esto significa que, si se produce un error durante una operación, el proveedor revierte cualquier cambio realizado en la base de datos. Por ello, su aplicación debe estar conectada a una implementación del servidor MongoDB con capacidad para transacciones, como un conjunto de réplicas.

Puede deshabilitar las transacciones automáticas en los métodos SaveChanges() y SaveChangesAsync() configurando la propiedad AutoTransactionBehavior en AutoTransaction.Never en su subclase DbContext durante la configuración de la aplicación. Sin embargo, no recomendamos deshabilitar esta función, ya que cualquier cambio de concurrencia o fallo operativo durante la operación de guardado dejará la base de datos en un estado inconsistente.

El siguiente ejemplo muestra cómo deshabilitar las transacciones automáticas en los métodos SaveChanges() y SaveChangesAsync():

dbContext.Database.AutoTransactionBehavior = AutoTransactionBehavior.Never;

Advertencia

Deshabilitar las transacciones automáticas puede conducir a inconsistencias de datos. Recomendamos que no desactive esta funcionalidad.

Puedes utilizar el método Add() para insertar una sola entidad en tu colección, o puedes utilizar el método AddRange() para insertar varias entidades a la vez.

El método Add() acepta una única entidad del mismo tipo que usted especificó en la instancia DbSet que está modificando.

El siguiente código usa el método Add() para agregar un nuevo objeto Planet al DbSet llamado Planets. Luego, llama al método SaveChanges() para insertar esa entidad en la colección de MongoDB.

db.Planets.Add(new Planet()
{
name = "Pluto",
hasRings = false,
orderFromSun = 9
});
db.SaveChanges();

El método AddRange() acepta una matriz de entidades que desea agregar a DbSet.

El siguiente código usa el método AddRange() para agregar una matriz de objetos Planet a la DbSet llamada Planets. Luego, llama al método SaveChanges() para insertar dichas entidades en la colección de MongoDB.

var planets = new[]
{
new Planet()
{
_id = ObjectId.GenerateNewId(),
name = "Pluto",
hasRings = false,
orderFromSun = 9
},
new Planet()
{
_id = ObjectId.GenerateNewId(),
name = "Scadrial",
hasRings = false,
orderFromSun = 10
}
};
db.Planets.AddRange(planets);
db.SaveChanges();

Para actualizar una entidad, primero recupera la entidad que deseas actualizar. Luego, realiza los cambios en esa entidad. El proveedor rastrea cualquier cambio realizado en la entidad, como la configuración de propiedades o la adición y eliminación de elementos de campos con valores de lista. Para guardar la actualización en MongoDB, llama al método SaveChanges(). El proveedor EF Core compara la entidad actualizada con un snapshot de la entidad anterior al cambio y actualiza automáticamente la colección utilizando la API de query de MongoDB.

El siguiente código recupera una entidad cuyo valor name es "Mercury" y actualiza el campo name. A continuación, llama al método SaveChanges() para conservar ese cambio en la colección.

var planet = db.Planets.FirstOrDefault(p => p.name == "Mercury");
planet.name = "Mercury the first planet";
db.SaveChanges();

Puede utilizar el método Remove() para eliminar una sola entidad de su colección, o el método RemoveRange() para eliminar varias entidades a la vez.

El método Remove() acepta una única entidad del mismo tipo que usted especificó en la instancia DbSet que está modificando.

El siguiente código elimina una entidad Planet cuyo valor name es "Pluto". A continuación, llama al método SaveChanges() para eliminarla de la colección de MongoDB.

var planet = db.Planets.FirstOrDefault(p => p.name == "Pluto");
db.Planets.Remove(planet);
db.SaveChanges();

El método RemoveRange() acepta un arreglo de entidades para remover del DbSet.

El siguiente código encuentra dos entidades Planet y las añade a un arreglo. Luego, usa el método RemoveRange() para remover ambas entidades de la DbSet. Por último, utiliza el método SaveChanges() para remover esas entidades de la colección de MongoDB.

var pluto = db.Planets.FirstOrDefault(p => p.name == "Pluto");
var scadrial = db.Planets.FirstOrDefault(p => p.name == "Scadrial");
var planets = new[] { pluto, scadrial };
db.Planets.RemoveRange(planets);
db.SaveChanges();

Para obtener más información sobre los métodos analizados en esta guía, consulte los siguientes enlaces de documentación de la API de .NET:

  • Guardar cambios()

  • Add()

  • AddRange()

  • remover()

  • RemoveRange()

Volver

Consulta de datos

En esta página