2017-08-24 9 views
3

私はクラスライブラリを単独でソリューションに用意しています。このライブラリは、NuGetパッケージとして公開されます。クラスライブラリのservice.AddDbContextを追加する方法.NET CORE

だから、私は自分のプロジェクトにライブラリを追加したいと私はこれを定義するために、プロジェクトの立ち上げを接続する必要があります。

services.AddDbContext<DataContext>(options =>  
    options.UseSqlServer(Configuration["ConnectionStrings:LocalConnectionString"])); 

しかし、私のクラスライブラリプロジェクトにはスタートアップはありません。私は実際のプロジェクトのためにこれをライブラリプロジェクトでどのように定義できますか?

+0

設定にアクセスできる拡張メソッドを公開します。 – Nkosi

答えて

4

ライブラリを構成する他のライブラリと統合できるように、ライブラリに拡張ポイントが公開されます。

public static class MyExtensionPoint { 
    public static IServiceCollection AddMyLibraryDbContext(this IServiceCollection services, IConfiguration Configuration) { 
     services.AddDbContext<DataContext>(options => options.UseSqlServer(Configuration["ConnectionStrings:LocalConnectionString"])); 
     return services; 
    } 
} 

メインのStartupでこのようにして、拡張機能経由でライブラリサービスを追加できるようになりました。

public class Startup { 

    public void ConfigureServices(IServiceCollection services) { 
     //... 

     services.AddMyLibraryDbContext(Configuration); 

     services.AddMvc(); 
    } 
} 
+0

ありがとう! –

+0

少し注意してください:依存性注入で 'options.UseSqlServer'拡張を使うためには' Microsoft.EntityFrameworkCore.SqlServer'をインストールする必要があります。 –

+0

@ŞerefCanMuştuそれは正しいでしょう。ライブラリを結びつける/結合したくない場合は、代わりにconfig関数を公開して、スタートアップがそれを管理できるようにします。 – Nkosi

関連する問題