0

Meine WinForm-App realisiert MVC-Muster und besteht aus zwei Projekten. Der erste enthält View- und Controller-Layer und der zweite Model-Layer (Klassenbibliothek).MVC-Muster. "Konnte die Verbindungszeichenfolge mit dem Namen ... in der Anwendungskonfigurationsdatei nicht finden"

Die Anwendung muss Informationen aus der Datenbank abrufen (ich verwende MS SQL Server).

Im zweiten Projekt (Model-Layer) habe ich ADO.NET-Modell, Methoden mit der Datenbank und entsprechende Verbindungszeichenfolge in app.config zu arbeiten. Aber wenn ich die App starte und versuche, eine Anfrage an die Datenbank zu stellen, erscheint der Fehler "Konnte die Verbindungszeichenfolge mit dem Namen nicht finden ... in der Anwendungskonfigurationsdatei".

Ich denke, wenn Controller eine Methode des Modells aufrufen, um eine Abfrage an die Datenbank-App zu versuchen versucht, Verbindungszeichenfolge in App.config-Datei des Hauptprojekts zu finden und kann es dort nicht finden. Ich denke, es ist nicht richtig, eine Verbindungszeichenfolge im Projekt mit Controller und View zu erstellen.

Wie kann ich das Problem in der richtigen Weise lösen?

Antwort

1

Die App.config (oder Web.config wo zutreffend) gehört zur Anwendung, nicht zu irgendeiner Klassenbibliothek.

Wenn Ihre Controller/View-Schichten ein Windows Forms-Projekt sind und Ihre Modellschicht ein Klassenbibliotheksprojekt ist, gehört die App.config in das Windows Forms-Projekt.

I think it's not right to create a connection string in the project with Controller and View.

Es hat nichts mit den Controllern und Views zu tun. Die App.config ist nicht Teil des MVC-Musters. Es hat alles mit der Konfiguration einer Anwendung für eine Umgebung zu tun. Jede Klassenbibliothek sollte über Anwendungen und Umgebungen hinweg portierbar sein. Jede Anwendung sollte so konfiguriert sein, dass sie in der Umgebung ausgeführt wird, in der sie implementiert ist.


Grundsätzlich setzen Sie Ihre App.config Werte in der Anwendung App.config.

+0

Ich hinzufügen Verbindungszeichenfolge in Einstellungen von Winforms-Projekt, führen Sie die Anwendung, aber Fehler erhalten: "System.Data.Entity.Infrastructure.UnintentionalCodeFirstException" – Anrei

+0

@Andrei: Haben Sie diese Ausnahme auf Google nachgeschlagen? Offenbar besteht ein Konflikt zwischen der Verwendung von Entity Framework und der von Ihnen bereitgestellten Verbindungszeichenfolge. Dies könnte helfen: http://StackOverflow.com/questions/5940616/model-first-with-dbcontext-fails-to-initialize-new-database – David

+0

Der Fehler wird in OnModelCreating-Methode der DbContext-Klasse angezeigt. Diese Methode wird in dem Moment selbst aufgerufen, in dem eine LINQ-Abfrage für die Datenbank initialisiert wird. – Anrei