Configurar o provedor do EF Core
Neste guia, você aprenderá como configurar um aplicação para usar o Fornecedor do MongoDB Entity Framework Core. Para saber como configurar um novo projeto e instalar o fornecedor de núcleo EF, consulte oInício Rápidodo .
Crie um POCO
Crie um objeto simples e antigo de classe , 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; } public String Order { get; set; } }
Dica
Para saber mais sobre POCOs, consulte o guia POCO na documentação do driver .NET/C#.
Crie uma classe de contexto de banco de dados
Para começar a usar o Entity Framework Core, crie uma classe de contexto que deriva do DBContext. A instância da classe derivada do DbContext
representa uma sessão do banco de dados de dados e é utilizada para consultar e salvar instâncias de suas entidades.
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; } 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.
Usar 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("<Your MongoDB Connection URI>"); 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#.
Exemplo
O seguinte exemplo de código mostra como configurar o EF Core Provider e inserir um documento no banco de banco de dados:
using Microsoft.EntityFrameworkCore; using MongoDB.Bson; using MongoDB.Driver; using Microsoft.Extensions.Configuration; using MongoDB.EntityFrameworkCore.Extensions; var mongoClient = new MongoClient("<Your MongoDB Connection URI>"); var dbContextOptions = new DbContextOptionsBuilder<MyDbContext>().UseMongoDB(mongoClient, "<Database Name>"); var db = new MyDbContext(dbContextOptions.Options); // Add a new customer and save it to the database db.Customers.Add(new Customer() { name = "John Doe", Order = "1 Green Tea" }); db.SaveChanges(); public class Customer { public ObjectId Id { get; set; } public String Name { get; set; } public String Order { get; set; } } public class MyDbContext : DbContext { public DbSet<Customer> Customers { get; init; } public MyDbContext(DbContextOptions options) : base(options) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder); modelBuilder.Entity<Customer>().ToCollection("customers"); } }