es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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&lt;&gt;))
    .As(typeof(IRepository&lt;&gt;))
    .As(typeof(IReadRepository&lt;&gt;))
    .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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Este mensaje de error sugiere que hay un problema con el paquete MySql.EntityFrameworkCore durante la activación del constructor AppDbContext. El método AppendIdentityWhereCondition en la clase MySql.EntityFrameworkCore.MySQLUpdateSqlGenerator no tiene una implementación, lo que está causando la excepción TypeLoadException.

    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 con MySql.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. Cada DbContext 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.

Comments are closed.