2016-12-09 7 views
0

エンティティフレームワークを使用する.net 4.6アセンブリを呼び出す.netコアREST APIプロジェクトがあります。私はまた、そのアセンブリを呼び出すテストプロジェクトを持っています。接続文字列を与えるための古い方法は.netコアの使用時にエンティティフレームワーク6の接続文字列を保存する方法

<connectionStrings> 
    <add name="MyDbContext" connectionString="data source=(LocalDB)\MSSQLLocalDB;AttachDBFilename=|DataDirectory|\TestDB.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

のように見えるアプリケーションまたはweb.configファイル内の接続文字列を持っていることだったと、あなたのdbContextは私がに情報を入れて持っていると仮定

public MyDbContext(): base("name=MyDbContext") 

をしました私のappsettings.Jsonのような

"ConnectionStrings": { 
    "MyDatabase": "Server=(localdb)\\mssqllocaldb;Database=TestDB;Trusted_Connection=True;" 
}, 

しかし、私はどのように私のDbContextを変更する必要がありますか?私のテストプロジェクトはどのように接続文字列を設定しますか?

これは、以前は多くの人がやった簡単なものですが、私のグーグルでは例が見つかりませんでした。ありがとう。

答えて

0

よく関心を集めていませんでした。私は実用的な解決策を持っていますが、私はそれが正しいと思っていません。

私はその後、私はappsettings.json

"Settings": { 
    "DBConnection": "Server=(localdb)\\mssqllocaldb;Database=TestDB;Trusted_Connection=True;" 
} 

に設定を入れて、この設定をバインドするだけでたDbConnection

現在、設定を保持するために
public class Settings 
{ 
    public string DBConnection { get; set; } 
} 

を新たに設定するクラスを作成しました起動時の設定オブジェクト

private void AddConfigurationSettingsSingleton(IServiceCollection services) 
{ 
    var config = new Settings(); 
    Configuration.GetSection("Settings").Bind(config); 
    services.AddSingleton(config); 
} 

次にDIは、必要です。

public class Repository 
{ 
    private readonly SkinDbContext dbContext; 
    public Repository(Settings settings) 
    { 
     dbContext = new MyDbContext(settings.DBConnection); 
    } 

でも私DBContextは、接続文字列を取る

public class MyDbContext: DbContext 
{ 
    public MyDbContext(string connectionString): base(connectionString) 
    { 
    } 
} 
関連する問題