2016-06-29 4 views
0

Gurus。app.configファイルから実際の接続文字列値を取得する方法と、DbContextコンストラクタでパスワード文字列を追加する方法C#

DbContextコンストラクタにパスワード文字列を追加しようとしていますが、できません。

app.configファイルから実際の接続文字列値を取得し、DbContextコンストラクタC#でパスワード文字列を追加するにはどうすればよいですか?

私はEF 6とwinforms C#を使用しています。

ありがとうございます。

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:私はちょうど自分の質問、コードでほとんど変化してを解決するために、この記事How to in-code supply the password to a connection string in an ADO.Net Entity Data Modelを使用していた

。コードのこの部分では

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(); 
    } 

"this.Database.Connection.ConnectionString = providerBuilder.ToString();" 私は(私が望んでいたとして)パラメータなしで私のコンストラクタを使用することができます。

+2

[コード内でADO.Netエンティティデータモデルの接続文字列にパスワードを供給する方法](http:// stackoverflow。com/questions/8170118/how-to-in-code-to-a-connection-string-in-an-ado-net-entity-d) – blins

+0

またはこちらhttp://stackoverflow.com/a/20254520/1862333 – failedprogramming

+0

ありがとう、@blins ...私はちょうどこのポストを使用しています "どのようにADO.Netエンティティデータモデルの接続文字列にパスワードを提供する" **少しのコード変更**私自身の質問を解決する。 私は解決策を使って質問を更新します(このように答えるのが正しいかどうかはわかりません)。 – Cesco

答えて

0

エンティティフレームワークの接続文字列のパスワードを変更するプライベート関数を追加することができます。

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

パラメータなしのコンストラクタを使用したいと思います - "public ficharioEntities()" – Cesco

0

私はあなたが使用できるカップルのソリューションを持っています。これは基本的な平文ファイルIOに結びついていますので、あとでもう少し詳しく知るために、いくつかのチュートリアルをチェックしてください。

1:JSON

あなたの設定ファイルは、必要な情報を取得するためにJSONパーサーを使用することができますJSON形式を使用している場合。あなたとコンピュータの両方で簡単に読むことができるため、情報を平文ファイルに保存するのに便利です。ほとんどの場合、編集することができます。その場合、C#JSON解析を探します。

2:StreamReaderを+ String.Contains

configファイルが何の形式を持っていないか、独自の形式を使用しますが、まだ多少きれいにフォーマットされたか、読みやすいされている場合は、あなたが行うことができます次のことはするのStreamReaderを使用していますファイルから読み込み、String.Containsを使用して必要なパラメータの場所を特定し、最後にファイルから抽出します。ほとんどの時間String.Containsはフォーマット/周囲の文字を扱うことができないので、それはより簡単に聞こえる。この場合は、あなたが使用して...

3:StreamReaderを+ REGEX

前と同じ

、あなたは複雑なまたは厄介な平文ファイルString.Containsに情報を見つける必要があるとき以外は文句を言わない、複雑なvariatingパターンを識別することができますテキスト内。 String.Containsは正確な文字パターンを識別できますが、REGEXでは特殊文字を使用して複雑なパターンを扱うことができます。たとえば、正規表現\ s \ w + \ sは、2つのスペースの間に任意の量の文字を検出します。したがって、複雑なパターンの中で自分の情報を見つける必要がある場合は、正規表現が必要です。私はあなたが見つける必要があるものの周りに正規表現を構築し、オンラインの正規表現のテスターを見つけることをお勧めします。

+0

@ r3eckonさんのお返事ありがとうございますが、設定ファイル(app.config)を使用します。 – Cesco

関連する問題