web-dev-qa-db-fra.com

Impossible de créer un objet de type 'ApplicationDBContext'. Pour les différents modèles pris en charge au moment de la conception

Je fais face à l'erreur suivante lors de l'ajout de la migration de la base de données dans le noyau .NET

C'est l'erreur:

Ceci est le code dans Startup:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options => 
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
           
    services.AddDefaultIdentity<ApplicationUser>().AddEntityFrameworkStores<ApplicationDbContext>();
    services.AddControllers();
}

Ceci est la classe ApplicationDbContext:

public class ApplicationDbContext : IdentityDbContext
{
    public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options)
    { }

    public DbSet<ApplicationUser> applicationUsers { get; set; }
}

C'est le ApplicationUser:

public class ApplicationUser : IdentityUser
{
    [Required]
    [Column(TypeName = "nvarchar(150)")]
    public string UserFName { get; set; }
    [Required]
    public string UserLName { get; set; }
}
13
eman

J'ai eu la même erreur quand j'avais deux constructeurs de mon dBContext. Après avoir réarrangé les constructeurs, le constructeur sans paramètre est d'abord dans la classe. par exemple.

public ProgramDbContext() : base()
{
}
public ProgramDbContext(DbContextOptions<ProgramDbContext> options) : base(options)
{
}

Ce doit être quelque chose avec l'invocation dynamique dbcontext objet avec la réflexion en jouant ici.

0
alianto

Dans mon cas, cela m'a été dû à la mémoire de mes types de données et de migrations dans un projet "Data" distinct et que cela a accidentellement défini comme projet de démarrage plutôt que mon projet de démarrage réel.

0
Ali Bdeir

Je faisais face au même problème lors de l'exécution de la commande de script de migrations de DOT NET EF de la tâche de pipeline Azure. J'ai ajouté un argument "-Project". Mais toujours échoué. L'ajout de l'argument "-Startup-projet" a fonctionné pour moi. Je suppose que même si nous spécifions la classe de démarrage dans le projet, pour que l'outil EF pour en trouver un, nous devons les mentionner explicitement.

0
Nikhil