ich diese Störung erhalte, wenn ich versuche Code erste Migrationen zu verwenden.Getting 'Context ist nicht konstruierbar. Fügen Sie einen Standard-Konstruktor oder bieten eine Implementierung von IDbContextFactory.“
Mein Kontext einen Konstruktor mit dem Verbindungsnamen hat.
public class VeraContext : DbContext, IDbContext
{
public VeraContext(string NameOrConnectionStringName = "VeraDB")
: base(NameOrConnectionStringName)
{
}
public IDbSet<User> Users { get; set; }
public IDbSet<Product> Products { get; set; }
public IDbSet<IntCat> IntCats { get; set; }
}
Diese Verbindungsname wird mit ninject injiziert, wenn das Projekt läuft, ich habe es auch als Standard wie in dem obigen Code angegeben, aber das hat nicht geholfen.
kernel.Bind<IDbContext>()
.To<VeraContext>()
.WithConstructorArgument("NameOrConnectionStringName", "VeraDB");
wenn ich versuche, Migrationen hinzufügen „Enable-Mi grations“ist führt den Fehler auf:
The target context 'VeraData.EF.Infrastructure.VeraContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory.
Wenn ich den Konstruktor von VeraContext
entfernen wird es funktionieren, aber eine andere Datenbank mit VeraData.EF.Infrastructure.VeraContext
wie der Name erzeugt.
Ich gehe davon aus, dass ninject
nur die Verbindungszeichenfolge übergibt, wenn das Projekt ausgeführt wird und nicht, wenn ich Code erste Migrationen verwende. Wie auch immer, ich kann einen Standard für den Verbindungsnamen eingeben/bereitstellen, wenn Code-Erstmigrationen verwendet werden?
Das ganze ninject Zeug passiert, wenn jemand irgendwo einen 'Kernel.Get' macht.Sie müssen entweder einen Standard-Ctor hinzufügen oder darauf warten, dass jemand Ihnen sagt, wie Sie die Migrations-Objekte anhängen können, um Objekte über Ninject zu konstruieren (was ich denke, was Sie tun!). –
Sie müssten die 'IDbContextFactory' implementieren, damit die Ergebnisse konsistent sind (oder Ihre Migration vom Code wird nicht funktionieren usw.). Im Wesentlichen benötigen Sie eine Standard-Ctor (das ist der Fehler) - aber nur die Implementierung würde zu Problemen führen. – NSGaga
Die 'IDbContextFactory' ist nicht gut für die Injektion, es wird einfach nicht funktionieren. Kann den Punkt noch nicht sehen ... – nicodemus13