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 generar inconsistencias en los datos. Le recomendamos no deshabilitar esta función.

Puede utilizar el método Add() para insertar una sola entidad en su colección, o puede 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 recupere la entidad que desea actualizar. A continuación, realice los cambios en ella. El proveedor registra 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, llame al método SaveChanges(). El proveedor de EF Core compara la entidad actualizada con una instantánea de la entidad antes del cambio y actualiza automáticamente la colección mediante la API de consultas 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 una matriz. Luego, utiliza el método RemoveRange() para eliminar ambas entidades de DbSet. Finalmente, utiliza el método SaveChanges() para eliminarlas 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()

  • Eliminar()

  • RemoveRange()

Volver

Consulta de datos

En esta página