J'ai un contexte qui dérive de DbContext comme celui ci-dessous:chaîne de connexion passe au code EF DbContext premier
public class StudentContext : DbContext
{
public StudentContext(string connectionString) : base(connectionString)
{
}
protected override void OnModelCreating(DBModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<StudentContext, StudentMigrations.Configuration>());
}
public DbSet<Students> Students {get; set;}
}
Je suis en train de passer la chaîne de connexion par:
studentContext = new StudentContext(settings.ConnectionString)
Le les paramètres sont chargés au moment de l'exécution en lisant un fichier de configuration. J'ai essayé this et j'ai également essayé de définir la chaîne de connexion à l'intérieur du constructeur StudentContext en utilisant this.Database.Connection.ConnectionString. Dans les deux cas, j'obtiens une exception qui me demande de fournir un constructeur par défaut ou de fournir une implémentation de IDbContextFactory. La seule chose qui fonctionne est la suivante:
public class StudentContext : DbContext
{
public static string ConnectionString;
public StudentContext(string connectionString) : base(ConnectionString = connectionString)
{
}
//And also provide a default implementation of the DbContext constructor:
public StudentContext() : base(ConnectionString)
{
}
protected override void OnModelCreating(DBModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
System.Data.Entity.Database.SetInitializer(new MigrateDatabaseToLatestVersion<StudentContext, StudentMigrations.Configuration>());
}
public DbSet<Students> Students {get; set;}
}
Je suis en train de réduire l'utilisation de statics dans le code et donc si je pouvais obtenir la première option de travailler, ce serait génial.