Ich schreibe einige Tests. Ich verspotte den Rahmen der Entität. Gestern hat alles richtig funktioniert und ich bin mir fast sicher, dass ich nichts von gestern verändert habe. Im app.config mein Testprojekt habe ich diese VerbindungszeichenfolgeMock bekomme falsche Verbindung String
<connectionStrings>
<add name="PublicAreaContext"
providerName="System.Data.SqlClient" connectionString="Server=.\SQLSERVER; ..." />
</connectionStrings>
Nun meinen Entity Framework Kontext ich spotte:
var mockContext = new Mock<PublicAreaContext>() { CallBase = true };
... // all my entities mocked
mockContext.Setup(x => x.SaveChanges()).Returns(1);
Nun, wenn ich meinen Test etwas schief geht, und den Kontext starten scheint zu sein, mit der falschen Verbindungszeichenfolge erstellt
ich verstehe nicht, wo es, dass c nimmt Verbindung String ... Ich suchte in der Lösung SQLEXPRESS und ich finde nichts. In meinem Server (SQLSERVER) kann ich eine Datenbank namens Castle.Proxy.PublicAreaContext finden. Ich denke, die Datenbank wurde gestern erstellt, als alles funktionierte.
Können Sie mir sagen, was das Problem sein kann oder wie kann ich die Verbindungszeichenfolge richtig einstellen?
Danke
Können Sie Code anzeigen, der tatsächlich die Verbindungszeichenfolge und den Code verwendet, der es übergibt? –
Es ist wahrscheinlich wegen 'CallBase', das den Standardkonstruktor' DbContext' aufruft, der versucht, einen Namen mit dem Namen des Kontexttyps zu erzeugen, wenn er keinen Datenbank- oder Verbindungszeichenfolgennamen übergibt. – haim770
@ haim770: Wenn ich 'CallBase = false 'setze, erhalte ich diesen Fehler:' Der Kontext kann nicht verwendet werden, während das Modell erstellt wird. Diese Ausnahme wird möglicherweise ausgelöst, wenn der Kontext in der OnModelCreating-Methode verwendet wird oder wenn auf dieselbe Kontextinstanz von mehreren Threads gleichzeitig zugegriffen wird. Beachten Sie, dass Instanzmitglieder von DbContext und verwandten Klassen nicht garantiert Thread-sicher sind. – Ciccio