Ok, je souhaite recréer un projet que j'ai créé à l'aide de EF 4.1 à EF 5.0, assez simple ou au moins je pensais. Une des choses de mon ancien projet est que j'ai pu changer la chaîne de connexion de base de données au moment de l'exécution de EF 4.1:
using (var myContext = new MyEntities(ConnectionString))
{
}
Easy-Poisy mais à EF 5.0 Vous devez le faire différemment:
string connectionString = "data source=LocalHost;initial catalog=MyDatabase;user id=MyUserName;password=MyPassword;multipleactiveresultsets=True;App=EntityFramework";
using (var myContext = new MyEntities())
{
myContext.Database.Connection.ConnectionString = connectionString;
}
Maintenant, cela m'a pris une meilleure partie de deux heures pour comprendre, alors je suppose que ma question est la bonne façon de changer la chaîne de connexion au moment de l'exécution ou non? Si c'est pourquoi cela a-t-il fait ce changement?
J'ai trouvé cela - link mais cela n'a pas fonctionné. J'ai reçu l'erreur comme indiqué dans le premier commentaire de la première réponse de Ladislav Mrnka. J'ai trouvé plus tard cela link qui semble fonctionner bien.
J'ai relu le premier lien J'ai posté et j'ai trouvé une autre solution, j'ai simplement créé une classe partielle:
public partial class MyEntities : DbContext
{
public MyEntities(string connectionString) : base(connectionString)
{
Database.Connection.ConnectionString = connectionString;
}
}
Utilisez la surcharge de constructeur de contexte qui prennent la chaîne de connexion en tant que paramètre.
Regardez un autre lien Cadre d'entité de configuration pour la chaîne de connexion dynamique . Il dit - "Vous pouvez le faire en créant une autre classe partielle car la classe d'entités est déclarée partielle"