2015-12-14 2 views
6

私はNugetパッケージを作成しています。クラスライブラリで作業しています。デフォルトの接続文字列にアクセスするには、appsetting.jsonまたはconfig.jsonにアクセスする必要があります。クラスライブラリからappsetting.jsonまたはvNextのconfig.jsonへのアクセス

私の実際の作業コードを新しいバージョンのASP.NET vNextに移行する最も良い方法は何ですか?

私はthis questionでそれについて読んだことがありますが、それは私にとっては素晴らしい解決策です。コードの作業

/// <summary> 
/// Retrieves the default connectionstring from the App.config or Web.config file. 
/// </summary> 
/// <returns>Returns the default connectionstring from the App.config or Web.config file.</returns> 
public static string GetDefaultConnectionString() 
{ 
    return ConfigurationManager.ConnectionStrings[DefaultConnectionstringName].ConnectionString; 
} 
+0

を試してみてください取得するために、私はこの同じシナリオ(MVCプロジェクトの実行が、Webプロジェクトから接続文字列を読んでする必要がある別のプロジェクトで行われたすべてのデータアクセスを)持っています。私は以下の答えが「受け入れられた」とは思わないが、これはまだあなたのために働いていないのですか? – ganders

答えて

5

古いクラスライブラリは、app.configを使用して自動的に設定値を読み取ります。新しいクラスライブラリでは、この機能を追加する必要があります。 Startup.csはapp.settingsを読み込むために使います。クラスライブラリでは、Startup.csも追加する必要があります。あなたのproject.json

あなたはappsettings.jsonadd - new item経由の追加の依存

"Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final" 

を持っていることを確認してください。あなたの接続MYDBやDefaultConnectionを呼び出すことができますjson

{ 
    "Data": { 
    "MyDb": { 
     "ConnectionString": "Server=.;Database=MyDb;Trusted_Connection=True;MultipleActiveResultSets=true" 
    } 
    } 
} 

にフィルタリングします。

Startup.csを追加すると、コードはappsettings.jsonとなります。

これを行うコンストラクタメソッドについては下記を参照してください。

参照

Configuration["Data:MyDb:ConnectionString] 

上記の例では

using Microsoft.Data.Entity; 
using Microsoft.Extensions.Configuration; 
using Microsoft.Extensions.DependencyInjection; 



namespace MyProject 
{ 
    public class Startup 
    { 
     public IConfigurationRoot Configuration { get; set; } 

     public Startup() 
     { 
      var builder = new ConfigurationBuilder() 
      .AddJsonFile("appsettings.json"); 

      Configuration = builder.Build(); 
     } 

     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddEntityFramework() 
       .AddSqlServer() 
       .AddDbContext<MyDbContext>(options => 
        options.UseSqlServer(Configuration["Data:MyDb:ConnectionString"])); 
     } 
    } 
} 

はIConfigurationRootの種類ではなく、文字列を返します。

文字列値は、次の

string connection = Configuration.Get<string>("Data:MyDb:ConnectionString"); 
+1

こんにちは、これはWebプロジェクト用です...私はクラスライブラリにあります。vNext – chemitaxis

+0

mmm ok、私は今しようとしています...しかし、Nugetとして使用すると、project.jsonは読み込もうとしています?ありがとう! – chemitaxis

+0

古いクラスライブラリは、app.configを使って自動的に設定値を読み込みます。新しいクラスライブラリでは、この機能を追加する必要があります。 Startup.csはapp.settingsを読み込むために使います。クラスライブラリでは、Startup.csも追加する必要があります。クラスライブラリのコードからこのコードをコピーしています。これは動作します。私はそれを簡単にするために私の元の答えを修正します。 – firste

関連する問題