Estou tentando usar o Entity Framework e o MongoDB.
Este é meu docker compose:
services:
mongo-db:
container_name: mongo-db
image: mongo
restart: always
ports:
- "27017:27017"
Entidade e contexto:
public class Order
{
public string Id { get; set; }
public string Name { get; set; }
}
public class OrdersDbContext(DbContextOptions options) : DbContext(options)
{
public DbSet<Order> Orders { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<Order>().ToCollection("orders");
}
}
É assim que estou tentando usá-lo:
var order = new Order
{
Id = Helpers.GetNewId(),
Name = "Some order"
};
var mongoClient = new MongoClient("mongodb://localhost:27017");
var dbContextOptions =
new DbContextOptionsBuilder<OrdersDbContext>().UseMongoDB(mongoClient, "orders");
var ordersDb = new OrdersDbContext(dbContextOptions.Options);
ordersDb.Orders.Add(order);
ordersDb.SaveChanges();
Ao chamar SaveChanges
, recebo este erro:
Exceção não tratada. MongoDB.Driver.MongoIncompatibleDriverException: O servidor em localhost:27017 relata a versão 4 do wire, mas esta versão do driver requer pelo menos a 7 (MongoDB 4.0.0).
em MongoDB.Driver.MongoIncompatibleDriverException.ThrowIfNotSupported(descrição do ClusterDescription)
em MongoDB.Driver.Core.Clusters.Cluster.SelectServerHelper.SelectServer()
em MongoDB.Driver.Core.Clusters.Cluster.SelectServer(seletor IServerSelector, CancellationToken cancellationToken)
em MongoDB.Driver.Core.Clusters.IClusterExtensions.SelectServerAndPinIfNeeded(cluster IClusterInternal, sessão ICoreSessionHandle, seletor IServerSelector, IReadOnlyCollection1 deprioritizedServers, CancellationToken cancellationToken) at MongoDB.Driver.Core.Bindings.WritableServerBinding.GetWriteChannelSource(IReadOnlyCollection
1 deprioritizedServers, CancellationToken cancellationToken)
em MongoDB.Driver.Core.Bindings.WritableServerBinding.GetWriteChannelSource(CancellationToken cancellationToken) em MongoDB.Driver.Core.Bindings.ReadWriteBindingHandle.GetWriteChannelSource(Token de cancelamentoToken de cancelamento)
Isso não faz sentido para mim, já que a versão atual do mongodb no container é 8.0.3. Alguma ideia de como consertar isso?