sto ottenendo questo errore quando provo ad usare il codice prime migrazioni.Ottenere 'Contesto non è costruibile. Aggiungere un costruttore di default o di fornire un'implementazione di IDbContextFactory ".
mio contesto ha un costruttore con il nome di connessione.
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; }
}
Questo nome della connessione viene iniettato con Ninject quando il progetto viene eseguito, ho anche specificato come predefinito, come nel codice di cui sopra, ma questo non ha aiutato.
kernel.Bind<IDbContext>()
.To<VeraContext>()
.WithConstructorArgument("NameOrConnectionStringName", "VeraDB");
quando provo ad aggiungere migrazioni con "Attiva-mi grations" è getta l'errore:
The target context 'VeraData.EF.Infrastructure.VeraContext' is not constructible. Add a default constructor or provide an implementation of IDbContextFactory.
Se rimuovo il costruttore da VeraContext
che funzionerà, ma crea un altro database con VeraData.EF.Infrastructure.VeraContext
come il suo nome.
Suppongo che ninject
passi solo la stringa di connessione quando il progetto è in esecuzione e non quando utilizzo le migrazioni prima del codice. Ad ogni modo posso inserire/fornire un valore predefinito per il nome della connessione quando si utilizzano le migrazioni prima del codice?
Tutte le cose di tipo ninject si verificano quando qualcuno da qualche parte sta facendo un 'Kernel.Get'.Devi aggiungere un ctor predefinito o aspettare che qualcuno ti dica come collegare il materiale delle migrazioni per costruire oggetti tramite Ninject (che immagino sia ciò che stai facendo!). –
Dovresti implementare 'IDbContextFactory' affinché i risultati siano coerenti (o la tua migrazione dal codice non funzionerà, ecc.). In sostanza, hai bisogno di un ctor predefinito (questo è l'errore), ma solo implementarlo porterebbe a problemi. – NSGaga
L'IDbContextFactory non è adatto all'iniezione, semplicemente non funzionerà, in base alla progettazione. Non si vede ancora il punto ... – nicodemus13