Ich habe Code-First-Entity-Framework verwendet. Ich habe in der Datei web.config eine Verbindung definiert, deren Name mit dem Klassennamen meines DbContext übereinstimmt (in diesem Beispiel 'MyDbContext').Code-first Entity Framework, das bei der Initialisierung keine Verbindungszeichenfolge web.config abruft
EF verwendet diese Verbindung ohne Probleme, wenn die Datenbank vorhanden ist.
Wenn ich jedoch die Datenbank lösche (um EF zu zwingen, sie neu zu erstellen), erstellt EF stattdessen die Datenbank auf dem lokalen Sql Express-Server.
Wenn ich die volle Verbindungszeichenfolge in der DbContext Klassenkonstruktors angeben wie
public class ReykerSCPContext : DbContext
{
public ReykerSCPContext() :
base("Server=tcp:MyDBSErver.database.windows.net,1433;Database=MyDB;User ID=#######;Password=#######;Trusted_Connection=False;Encrypt=True;MultipleActiveResultSets=True;PersistSecurityInfo=True;") { }
}
dann die Datenbank auf dem Server korrekt der Wahl erstellt wird. Groß!
Kann mir jemand sagen, ob dies das richtige Verhalten ist, da ich mir den Kopf zerschlage. Ich möchte es aus der web.config zu arbeiten, also brauche ich nicht unbedingt wieder aufbauen und erinnern Einstellungen in den Code zu ändern, etc ..
Ich glaube, das ist normal und EF standardmäßig auf die lokale SQL-Instanz. Ich muss eines meiner Projekte testen, um es zu überprüfen. Sie können auf Julie Lerman googlen und ihre Blogs/Videos sehen, wie sich der EF-Code zuerst verhält und wie er geändert wird. – Brian
Ich kann dieses Verhalten nicht reproduzieren. Ob die Datenbank vorhanden ist oder nicht, die connectionString von der Konfiguration wird verwendet. Haben Sie (als Workaround) versucht, den Namen der Verbindungszeichenfolge an den DbContext ctor zu übergeben (zB base ("name = {Your connection string}")? Falls nicht, versuchen Sie, ob es funktioniert. Auch welche Version von EF sind Sie? – Pawel
Ihre Konstruktor MyDbContext hat einen anderen Namen als Ihr Klassenname ReykerSCPContext, ist das das Problem? – Sergey