Menu Docs
Página inicial do Docs
/ / /
Provedor do EF Core
/

Gravar dados no MongoDB

Nesta página

  • Visão geral
  • Operações de gravação transacional
  • Insert
  • Inserir uma entidade
  • Inserir várias entidades
  • Update
  • Excluir
  • Excluir uma entidade
  • Excluir várias entidades
  • Informações adicionais

O Entity Framework Core permite que você trabalhe com dados em seu aplicação sem executar os comandos do banco de dados de dados explicitamente. Você pode inserir, atualizar ou excluir dados em seu aplicação e persistir essas alterações no MongoDB usando o método SaveChanges() ou SaveChangesAsync() .

Quando você chama o método SaveChanges() ou SaveChangesAsync() , o EF Core Provider detecta automaticamente quaisquer alterações feitas em seus dados e executa os comandos necessários para atualizar o banco de dados de dados usando a MongoDB Query API.

Neste guia, você pode ver exemplos de como executar operações de gravação comuns em um aplicação configurado para usar o EF Core Provider.

Dica

Para saber como configurar um aplicação para usar o fornecedor do EF Core, consulte Configurar o fornecedor do EF Core.

Os métodos SaveChanges() e SaveChangesAsync() são transacionais por padrão. Isso significa que, se ocorrer um erro durante uma operação, o fornecedor reverterá todas as alterações feitas no banco de banco de dados. Por esse motivo, seu aplicação deve estar conectado a um sistema compatível com transações do servidor MongoDB , como um conjunto de réplicas.

Você pode desativar as transações automáticas nos métodos SaveChanges() e SaveChangesAsync() definindo a propriedade AutoTransactionBehavior como AutoTransaction.Never na sua subclasse DbContext durante a configuração do aplicação . No entanto, não recomendamos desativar esse recurso. Isso faz com que quaisquer alterações de simultaneidade ou falhas de operação durante a operação de salvamento deixem o banco de dados de dados em um estado inconsistente.

O exemplo a seguir mostra como desabilitar transações automáticas nos métodos SaveChanges() e SaveChangesAsync() :

dbContext.Database.AutoTransactionBehavior = AutoTransactionBehavior.Never;

Aviso

A desativação de transações automáticas pode causar inconsistências de dados. Recomendamos que você não desative esse recurso.

Você pode usar o método Add() para inserir uma única entidade em sua collection ou pode usar o método AddRange() para inserir várias entidades de uma só vez.

O método Add() aceita uma única entidade do mesmo tipo que você especificou na instância do DbSet que você está modificando.

O código a seguir usa o método Add() para adicionar um novo objeto Planet ao DbSet chamado Planets. Em seguida, ele chama o método SaveChanges() para inserir essa entidade na MongoDB collection.

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

O método AddRange() aceita uma array de entidades que você deseja adicionar ao DbSet.

O código a seguir usa o método AddRange() para adicionar uma array de objetos Planet ao DbSet chamado Planets. Em seguida, ele chama o método SaveChanges() para inserir essas entidades na collection 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 atualizar uma entidade, primeiro recupere a entidade que você deseja atualizar. Em seguida, faça as alterações nessa entidade. O fornecedor acompanha todas as alterações feitas na entidade, como definir propriedades ou adicionar e remover itens de campos com valores de lista. Para salvar a atualização para MongoDB, chame o método SaveChanges() . O EF Core Provider compara a entidade atualizada com um snapshot da entidade antes da alteração e atualiza automaticamente a coleção usando a MongoDB Query API.

O código a seguir recupera uma entidade na qual o valor name é "Mercury" e, em seguida, atualiza o campo name . Em seguida, o código chama o método SaveChanges() para persistir essa alteração na collection.

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

Você pode utilizar o método Remove() para excluir uma única entidade da sua coleção ou o método RemoveRange() para excluir várias entidades de uma só vez.

O método Remove() aceita uma única entidade do mesmo tipo que você especificou na instância do DbSet que você está modificando.

O código a seguir remove uma entidade Planet na qual o valor name é "Pluto". Em seguida, ele chama o método SaveChanges() para excluir essa entidade da MongoDB collection.

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

O método RemoveRange() aceita uma array de entidades para remover do DbSet.

O código a seguir localiza duas entidades Planet e as adiciona a uma array. Em seguida, ele usa o método RemoveRange() para remover ambas as entidades do DbSet. Finalmente, ele usa o método SaveChanges() para remover essas entidades da coleção do 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 saber mais sobre os métodos discutidos nesta guia, consulte os seguintes links de documentação da API .NET:

  • SalvarAlterações()

  • Add()

  • AddRange()

  • Remove()

  • RemoveRange()

Voltar

Dados da consulta