Entity Framework - geschichtetes Design - Wo wird der Verbindungsstring eingefügt?

c# data-access-layer entity-framework n-tier

Frage

Ich verwende eine mehrschichtige Architektur mit dem Entity Framework als Datenschicht mit ein paar Repositorys, die die Linq-To-Entities-Abfragen enthalten. Die Datenschicht ist ein Projekt, daneben habe ich eine Diensteebene und die Schnittstelle, die eine Website ist.

Ich möchte, dass meine Website dafür verantwortlich ist, die Verbindungszeichenfolge für mein Entitätsmodell anzugeben. Wie mache ich das?

Ich verwende eine Singleton-Methode, um zu meinem Entitäts-Repository zu gelangen, das sich innerhalb des Datenlayers befindet.

Vielen Dank

Akzeptierte Antwort

Sie können die in der App.Config der DAL-Assembly erstellte Verbindungszeichenfolge in den Abschnitt connectionStrings der Datei web.config kopieren.

Sie können die Verbindungszeichenfolge in der Assembly-DLL beibehalten, sollten sie jedoch nicht für die Website bereitstellen.

Sie müssen die gesamte Verbindungszeichenfolge kopieren. Es sollte so aussehen:

<add name="DataEntities" connectionString="metadata=res://*/DataModel.csdl|res://*/DataModel.ssdl|res://*/DataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=xxx;Initial Catalog=xxx;User Id=xxx;Password=xxx;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />

Es sollte alle Informationen enthalten, wo sich die Zuordnungsdateien befinden.


Beliebte Antwort

In meinem Fall verwende ich zwar L2S anstelle von L2E, aber die Empfehlung sollte bestehen. Ich habe eine General-Config-Bibliothek, die aus einer XML-Datei stammt. Wenn ein Datenkontext erforderlich ist, verfügt jedes Datenobjekt über eine Methode wie die folgende. Zugegeben, es könnte einfach genug sein, wenn Sie möchten.

private static string _conStr = null;
private static CalendarsAndListsDataContext GetDataContext()
{
    if (_conStr == null)
    {
        _conStr = ConfigurationLibrary.Config.Settings().GetConnectionString("liveConString");
    }

    return new CalendarsAndListsDataContext(_conStr);
}

Der größte Nachteil ist nun, dass Änderungen der Verbindungszeichenfolge einen Neustart der Anwendung erfordern. In meinem Fall ist dies jedoch kein Problem.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum