Entity Framework kann keine Verbindung herstellen.

Jantz

Erfahrenes Mitglied
Hallo,

ich versuche mich gerade etwas an der .NET Programmierung. Ich habe eine Solution auf einer externen Festplatte erstellt (keine Ahnung ob der Hinweis relevant ist).

In dieser Solution befinden sich momentan 3 Projekte.

1) Eine Consolen Applikation: Namespace.ConApp
2) Eine Klassen libary : Namenspace.Services
3) Eine Klassen libary: Namenspace.Models

In dem Projekt "Models" befindet sich nur eine Entity framework .edmx Datei die ich mit Hilfe des Wizards erstellt habe. In der AppConfig ist folgender EntityConnectionString zu finden:
Code:
<add name="LTEntities" connectionString="metadata=res://*/LTModels.csdl|res://*/LTModels.ssdl|res://*/LTModels.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=MATRIX\SQLEXPRESS;Initial Catalog=LT;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Soweit sogut, erstellen konnte ich das Projekt "Models". Nun habe ich das Projekt "Models" dem Projekt "Business" bekannt gemacht und einfach in einer Art controller Klasse angesprochen. Und diese Klasse wiederum der ConsolenApp testweise bekannt gemacht um die Funktion fix zu testen.

Ich kann die komplette Solution erstellen, es werden keine Fehler angezeigt. Wenn ich diese jedoch debugge, dann sagt er mir folgendes (zu dem Zeitpunkt wenn ich über den Controller darauf zugreifen möchte):

Die angegebene benannte Verbindung wurde entweder nicht in der Konfiguration gefunden, ist nicht für die Verwendung mit dem EntityClient-Anbieter gedacht oder ist ungültig.

Und verweist dann in die Designer.cs der .edmx Datei in diesen Bereich:

Code:
/// <summary>
        /// Initialisiert ein neues LTEntities-Objekt mithilfe der in Abschnitt 'LTEntities' der Anwendungskonfigurationsdatei gefundenen Verbindungszeichenfolge.
        /// </summary>
        public LTEntities() : 
                base("name=LTEntities", "LTEntities")
        {
            this.OnContextCreated();
        }

Kann mir vielleicht irgendwer sagen, was ich genau falsch mache? Es scheint ja so dass er garkeine Verbindung herstellen kann bzw. den ConnectionString nicht findet oder aber dieser falsch ist.

Grüße und vielen Dank im voraus.

Jantzz
 

Jantz

Erfahrenes Mitglied
Also hab nochmal etwas geforscht.

Das Problem ist, dass er nicht die korrekte App.Config zu fassen bekommt. D.h. wenn ich die AppConfig des Startprojektes mit dem EntityConnectionString erweitere, dann findert er die verbindung.
Läuft nun zwar, aber irgendwie verwirrt mich das.

MfG
 

Jantz

Erfahrenes Mitglied
Ok noch weiter gefroscht. Es scheint wohl so gewollt zu sein.

It's not a beta thing, it's by design. The reason we design it this way is that the connection string is really considered configuration info (not part of the library). While in development you might want your app to run against one server, but when you put it in production you might want to connect to a different server, and after deployment you might want to redirect to yet another server when you rearrange things in a server farm or something.



The issue you are encountering is that there's not really a "per-DLL" config file or something like that. The config is associated with the app you build. The generated entity classes just follow an already well-established ado.net best practice of going after the config info in the config file.



- Danny Simmons - MSFT
 

Nico Graichen

Erfahrenes Mitglied
Richtig, das ganz ist so gewollt.
Die Datei heißt schließlich app.config! ;-)
Dies hat den Vorteil, dass du bei komplexeren Anwendungen mit mehreren Dlls nur eine app.config brauchst und nicht mehrere, in denen ggf. sogar immer das gleiche steht
 

Neue Beiträge