Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Configurar o provedor do EF Core

Neste guia, você aprenderá como configurar um aplicativo para usar o provedor do MongoDB Entity Framework Core. Para saber como configurar um novo projeto e instalar o EF Core Provider, consulte o Comece a usar o EF Core Provider.

Crie um objeto CLR/Classe antigo simples, ou POCO, para usar como modelo para sua entidade. Um POCO é um objeto de classe simples que não herda recursos de nenhuma classe de base ou interface específica da framework.

O seguinte exemplo de código mostra como criar um POCO que representa um cliente:

public class Customer
{
public ObjectId Id { get; set; }
public string Name { get; set; } = null!;
public string Order { get; set; } = null!;
}

Dica

Para saber mais sobre POCOs, consulte o guia POCO na documentação do driver .NET/C#.

To begin using Entity Framework Core, create a context class that derives from DBContext. The DbContext derived class instance represents a database session and is used to query and save instances of your entities.

A classe DBContext expõe propriedades do DBSet que especificam as entidades com as quais você pode interagir ao utilizar este contexto.

O exemplo seguinte cria uma instância de uma classe derivada do DBContext e especifica o objeto Customer como uma propriedade DBSet :

public class MyDbContext : DbContext
{
public DbSet<Customer> Customers { get; init; } = null!;
public MyDbContext(DbContextOptions options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Customer>().ToCollection("customers");
}
}

O exemplo de código anterior substitui o método OnModelCreating() . Substituir o método OnModelCreating() permite a você especificar detalhes de configuração para seu modelo e suas propriedades. Este exemplo utiliza o método ToCollection() para especificar que as entidades do Customer na sua aplicação mapeiam para a collection do customers no MongoDB.

Após criar uma classe DBContext , construa um objeto DbContextOptionsBuilder e chame seu método UseMongoDB() . Este método utiliza dois parâmetros: uma instância do MongoClient e o nome do reconhecimento de data center que armazena as collection com as quais você está trabalhando.

O método UseMongoDB() retorna um objeto DbContextOptions . Passe a propriedade Options deste objeto para o construtor de sua classe DBContext .

O exemplo a seguir mostra como construir um objeto DBContext desta forma:

var mongoClient = new MongoClient("<connection string>");
var dbContextOptions =
new DbContextOptionsBuilder<MyDbContext>().UseMongoDB(mongoClient, "<database name>");
var db = new MyDbContext(dbContextOptions.Options);

Dica

Criando um MongoClient

Você pode chamar métodos do MongoDB .NET/C# Driver ao usar o EF Core Provider. O exemplo anterior usa o método MongoClient() do driver .NET /C# para criar um cliente MongoDB que se conecta a uma instância do MongoDB .

Para saber mais sobre como usar o driver .NET/C# do MongoDB para se conectar ao MongoDB, consulte o guia de conexão na documentação do driver .NET/C#.

A vida útil e a configuração dos seus objetos MongoClient e DbContext afetam diretamente o uso da memória e a eficiência do pool de conexões.

Register MongoClient as a singleton and share a single instance across all DbContext registrations. Because each MongoClient object manages its own internal connection pool, creating a separate instance for each DbContext scope wastes connections and increases latency. To learn more, see Manage MongoClient Disposables in the .NET/C# Driver documentation.

Register DbContext as a scoped service so that each request uses a new change tracker. A singleton DbContext accumulates tracked entity state across all requests, which causes stale data, memory growth, and increasingly slow change-detection as the tracker grows larger. To learn more, see DbContext in Dependency Injection for ASP.NET Core in the Microsoft Entity Framework Core documentation.

O seguinte exemplo de código mostra como registrar serviços usando injeção de dependência, configurar o provedor EF Core e inserir um documento no banco de dados:

var serviceCollection = new ServiceCollection();
serviceCollection.AddSingleton<IMongoClient>(
new MongoClient("<connection string>"));
serviceCollection.AddDbContext<MyDbContext>((serviceProvider, options) =>
{
var mongoClient = serviceProvider.GetRequiredService<IMongoClient>();
options.UseMongoDB(mongoClient, "<database name>");
});
using var app = serviceCollection.BuildServiceProvider();
using (var scope = app.CreateScope())
{
var db = scope.ServiceProvider.GetRequiredService<MyDbContext>();
// Add a new customer and save it to the database
db.Customers.Add(new Customer() { Name = "John Doe", Order = "1 Green Tea" });
db.SaveChanges();
}