2017-10-10 12 views
0

ネットコアの構成を注入...私は基本クラスから私のクラスのDBActivityRepositoryに接続文字列を挿入したい依存性注入:私はネットコア2.0にいくつかの古いソフトウェアを移行しています2.0

。 ..

私は、基本クラスの作成に

this._DBHandler = new DBHandler(configuration); 

か、それはこのようにそれを行うには良いですが設定を渡す必要があります。

private DBHandler _DBHandler; 
private string connectionString; 
public DBActivityRepository(IConfiguration configuration) : base(configuration) 
{ 
    // **Do I need this?** 
    this._DBHandler = new DBHandler(configuration); 
    connectionString = this._DBHandler.GetConnectionString(); 
} 

ありがとう

+0

https://www.codeproject.com/Articles/1204089/ASP-NET-Core-Dependency-Injection – Ramankingdom

+0

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/依存性注入 – Ramankingdom

答えて

0

DBHandlerが基本クラスであり、DbActivityRepositoryがDBHandlerのサブクラスである場合、DBHandlerのインスタンスをDBActivityRepositoryに作成する必要はありません。そのpublicおよびprotectedメソッド/プロパティを直接継承することができます。

public interface IConfiguration 
{ 
    string GetConnectionString(); 
} 

public abstract class DbHandler 
{ 
    protected DbHandler(IConfiguration configuration) 
    { 
     ConnectionString = configuration.GetConnectionString(); 
    } 

    protected string ConnectionString { get; } 
} 

public class DbActivityRepository : DbHandler 
{ 
    public DbActivityRepository(IConfiguration configuration) 
     : base(configuration) 
    { 
    } 

    private void DoSomething() 
    { 
     // use your connStr 
     Console.Write(ConnectionString); 
    } 
} 
0

asp.netコアの依存性注入については、DIエンジンを組み込む必要があります。 まず、appsetting.jsonを作成する必要があります。

"ConnectionStrings": { 
    "NameOfContext":"server=localhost;userid=root;password=password;" 
} 

次に、appsettings.jsonから読み取る必要がある接続文字列とその他のプロパティのオプションタイプを作成します。

services.Configure<YourServiceOptions>(_config["ConnectionStrings:NameOfContext"]) 

そして、最後のステップは、あなたのDB接続のinitされています:MySQLで

services.AddDbContext<NameOfContext>(builder => builder.UseMySql(options.ConnectionString)); 

これだけ作品を。IServiceCollectionサービスはappsettings.jsonからプロパティを読み取るために

+0

@Florian Koch ...しかし私の場合、DIはクラスライブラリ(DAL)にあり、そのクラスはMVCプロジェクトで共有されています。すべての実装を一元化するためにDALに接続文字列を注入する必要があります。 – Cicciux

+0

@Cicciux申し訳ありませんが、これは私の答えではありません。 –

関連する問題