Cómo solucionar “Se lanzó una excepción al invocar el constructor ‘Void .ctor'”.
Intenté agregar una migración a uno de mis contextos, pero encontré este error:
Autofac.Core.DependencyResolutionException: Se produjo una excepción al activar weno.Infrastructure.Data.DataContext.AppDbContext.
---> Autofac.Core.DependencyResolutionException: Se produjo una excepción al invocar el constructor 'Void .ctor(Microsoft.EntityFrameworkCore.DbContextOptions`1[weno.Infrastructure.Data.DataContext.AppDbContext], MediatR.IMediator)' en el tipo 'AppDbContext'.
---> System.TypeLoadException: El método 'AppendIdentityWhereCondition' en el tipo 'MySql.EntityFrameworkCore.MySQLUpdateSqlGenerator' del ensamblado 'MySql.EntityFrameworkCore, Version=5.0.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d' no tiene una implementación.
en MySql.EntityFrameworkCore.Extensions.MySQLServiceCollectionExtensions.<>c.<AddEntityFrameworkMySQL>b_03(ServiceCollectionMap m)
Tengo un código DefaultInfrastructureModule como este:
builder.RegisterGeneric(typeof(AppRepository<>))
.As(typeof(IRepository<>))
.As(typeof(IReadRepository<>))
.InstancePerLifetimeScope();
builder.RegisterGeneric(typeof(AccountingRepository<>))
.As(typeof(IRepository<>))
.As(typeof(IReadRepository<>))
.InstancePerLifetimeScope();
.
.
.
}
Y mi AppDbContext como este:
public class AppDbContext : DbContext
{
private readonly IMediator? _mediator;
public AppDbContext(DbContextOptions<AppDbContext> options, IMediator? mediator)
: base(options)
{
_mediator = mediator;
}
public DbSet<ToDoItem> ToDoItems => Set<ToDoItem>();
public DbSet<Project> Projects => Set<Project>();
.
.
.
}
¿Cómo puedo solucionar esta excepción? Nota que quiero manejar 3 fuentes de datos.
davy.ai
Este mensaje de error sugiere que hay un problema con el paquete
MySql.EntityFrameworkCore
durante la activación del constructorAppDbContext
. El métodoAppendIdentityWhereCondition
en la claseMySql.EntityFrameworkCore.MySQLUpdateSqlGenerator
no tiene una implementación, lo que está causando la excepciónTypeLoadException
.Para solucionar este problema, podría intentar actualizar el paquete
MySql.EntityFrameworkCore
a una versión más nueva para ver si eso resuelve el problema. También podría intentar cambiar a un proveedor de base de datos diferente para sus contextos si sigue experimentando problemas conMySql.EntityFrameworkCore
.En cuanto al deseo de trabajar con 3 bases de datos fuente, es posible trabajar con múltiples bases de datos en Entity Framework Core definiendo múltiples clases
DbContext
. CadaDbContext
correspondería a una base de datos separada, y puede definir diferentes entidades, configuraciones y relaciones para cada contexto. Luego puede inyectar estos diferentes contextos donde sea necesario en su aplicación. Sin embargo, esto requeriría cadenas de conexión separadas e inicialización de bases de datos para cada contexto.