36 votes

AddDbContext a été appelé avec configuration, mais le type de contexte 'MyContext' ne déclare qu'un constructeur sans paramètre?

Dans la suite de l'application de la console (.Net core 2.0), l' scaffold-dbcontext créé le suivant: DbContext

public partial class MyContext : DbContext
{
    public virtual DbSet<Tables> Tables { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        if (!optionsBuilder.IsConfigured) { optionsBuilder.UseSqlServer(Program.Conn); }
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder) { .... }
}

Dans le main() (static void Main(string[] args)), le code suivant

var services = new ServiceCollection();
var conn = configuration.GetConnectionString("MySource");
services.AddDbContext<MyContext>(o => o.UseSqlServer(conn)); // Error

le suivant erreur d'exécution?

AddDbContext a été appelé à la configuration, mais le contexte de type 'MyContext' ne déclare qu'un constructeur sans paramètre. Cela signifie que la configuration adoptée pour AddDbContext ne sera jamais utilisé

69voto

CodeNotFound Points 595

Comme le dit l'erreur si vous configurez votre MyContext jusqu'à AddDbContext vous devez également ajouter un constructeur qui reçoit un paramètre de type DbContextOptions<MyContext> dans votre MyContext classe comme ci-dessous

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

Si vous ne le faites pas, ASP.Net Core ne pourra pas injecter la configuration que vous avez définie avec AddDbContext .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X