2016-06-29 30 views
0

Gurus.Wie erhalten Sie eine tatsächliche Verbindung Zeichenfolgen Werte aus app.config-Datei und fügen Sie eine Passwort-Zeichenfolge in DbContext-Konstruktor C#

Ich versuche, eine Passwort-Zeichenfolge in einem DbContext-Konstruktor hinzufügen, aber ich kann nicht.

Wie bekomme ich eine tatsächliche Verbindung Zeichenfolgen Werte aus app.config-Datei und fügen Sie eine Passwort-Zeichenfolge in DbContext Konstruktor C#?

Ich verwende EF 6 und winforms C#.

Vielen Dank im Voraus.

public partial class ficharioEntities : DbContext 
{ 
    public ficharioEntities() 
     : base("name=ficharioEntities") 
    { 

     // How get a actual connection strings values from app.config file and add a password string here 

    } 

UPDATE:

ich gerade diesen Beitrag verwendet habe How to in-code supply the password to a connection string in an ADO.Net Entity Data Model auf meine eigene Frage zu lösen, mit einer kleinen Änderung im Code.

public ficharioEntities() 
     : base("name=ficharioEntities") 
    { 

     var originalConnectionString = ConfigurationManager.ConnectionStrings["ficharioEntities"].ConnectionString; 
     var entityBuilder = new EntityConnectionStringBuilder(originalConnectionString); 
     var factory = DbProviderFactories.GetFactory(entityBuilder.Provider); 
     var providerBuilder = factory.CreateConnectionStringBuilder(); 
     providerBuilder.ConnectionString = entityBuilder.ProviderConnectionString; 
     providerBuilder.Add("Password", "<password_here>"); 

     this.Database.Connection.ConnectionString = providerBuilder.ToString(); 
    } 

Mit diesem Teil des Codes "this.Database.Connection.ConnectionString = providerBuilder.ToString();" Ich mein Konstruktor ohne Parameter verwenden kann (wie ich wollte).

+2

Mögliches Duplikat von [So geben Sie das Kennwort an eine Verbindungszeichenfolge in einem ADO.Net-Entitätsdatenmodell weiter] (http: // stackoverflow.com/questions/8170118/how-to-in-code-liefern-das-passwort-zu-einer-verbindung-string-in-einem-ado-net-entity-d) – blins

+0

Oder hier http://StackOverflow.com/a/20254520/1862333 – failedprogramming

+0

Danke, @blin ... Ich habe gerade diesen Beitrag "Wie gebe ich das Code-Passwort für eine Verbindungszeichenfolge in einem ADO.Net Entity Data Model ** ** mit ein wenig Code-Änderung ** um meine eigene Frage zu lösen. Ich aktualisiere meine Frage mit einer Lösung (ich weiß nicht, ob es richtig ist, auf diese Weise zu antworten). – Cesco

Antwort

0

Sie sollten in der Lage sein, eine private Funktion hinzuzufügen, die das Verbindungskennwort für die Entitätsrahmenverbindung ändert.

public partial class ficharioEntities : DbContext 
{ 
    public ficharioEntities(string password) 
         :base(GetEntityConnectionString(password)) 
    { 


    } 

    private static string GetEntityConnectionString(string password){ 
      string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["fichario"].ConnectionString; 
      System.Data.EntityClient.EntityConnectionStringBuilder entityconnection = new System.Data.EntityClient.EntityConnectionStringBuilder(s); 

     //EntityConnectionStringBuilder inherits from DBConnectionStringBuilder 
     //so you should be able to replace the password simply 
     entityconnection["Password"] = password; 

    //otherwise, if you know the connection properties you need 
    //you could rebuild an entity connection object. 

     return entityconnection.ToString(); 
    } 
} 
+0

Ich möchte einen Konstruktor ohne Parameter verwenden - "public ficharioEntities()" – Cesco

0

In Anbetracht Ihres Problems habe ich ein paar Lösungen, die Sie verwenden können. Dies hängt mit der grundlegenden Klartext-Datei-IO zusammen, also stellen Sie sicher, dass Sie später ein paar Tutorials dazu lesen, um ein bisschen vertrauter zu werden.

1: JSON

Wenn Ihre Konfigurationsdatei das JSON-Format verwendet können Sie einen JSON-Parser verwenden, um die benötigten Informationen zu erhalten. Es ist sowohl für Sie als auch für den Computer leicht zu lesen, was es zu einer nützlichen Möglichkeit macht, Informationen in Klartextdateien zu speichern, die mit wenig Aufwand bearbeitet werden können. Suchen Sie nach C# JSON-Parsing, wenn dies der Fall ist.

2: Stream + String.Contains

Wenn Ihre Konfigurationsdatei kein Format hat oder verwendet ein eigenes Format, ist aber noch etwas ordentlich formatiert oder leicht zu lesen, das nächste, was Sie tun können, ist ein Stream verwenden, um Lesen Sie aus der Datei und verwenden Sie dann String.Contains, um den benötigten Parameter zu identifizieren und diesen schließlich aus der Datei zu extrahieren. Es klingt einfacher als es ist, weil String.Contains meist nicht in der Lage ist, mit dem Format/umgebenden Zeichen umzugehen. In diesem Fall verwenden Sie ...

3: Stream + REGEX

Gleiche wie vorher, nur, wenn Sie Informationen in kompliziert oder unordentlich Klartext Dateien String.Contains nicht in der Lage sein, komplexe variating Muster zu finden, müssen zu identifizieren innerhalb des Textes. Während String.Contains genaue Zeichenmuster identifizieren kann, kann REGEX Sonderzeichen verwenden, um mit komplexen Mustern umzugehen. Zum Beispiel findet die Regex \ s \ w + \ s eine beliebige Anzahl von Buchstaben zwischen zwei Leerzeichen. Also, wenn Sie Ihre Informationen innerhalb komplexer Muster finden müssen, ist Regex der richtige Weg. Ich schlage vor, Sie finden einen Online-Regex-Tester und bauen den Regex um das, was Sie suchen müssen.

+0

Danke für Ihre Antwort, @ r3eckon ... aber ich möchte die Konfigurationsdatei Standard (app.config) verwenden. – Cesco