IServiceCollectionの拡張メソッドをビジネス/サービスレイヤに簡単に追加して、独自の依存関係を登録することができます。起動時には、WebアプリケーションのEntityFrameworkへの参照を持たずに、サービスレイヤー上でメソッドを呼び出すだけです。
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace your.service.layer
{
public static class MyServiceCollectionExtensions
{
public static IServiceCollection AddMyServiceDependencies(this IServiceCollection services, string connectionString)
{
services.AddEntityFrameworkSqlServer()
.AddDbContext<YourDbContext>((serviceProvider, options) =>
options.UseSqlServer(connectionString)
.UseInternalServiceProvider(serviceProvider)
);
return services;
}
}
}
スタートアップ:
using your.service.layer;
public void ConfigureServices(IServiceCollection services)
{
var connectionString = Configuration.GetConnectionString("EntityFrameworkConnectionString");
services.AddMyServiceDependencies(connectionString);
}
今、あなたのWebアプリは、あなたのビジネス/サービス層への参照を必要とし、それがEntityFrameworkに直接依存ではありません。
これは私が探していたものです。ありがとうございました! –
素晴らしいですが、それを受け入れられた回答としてマークできますか? –
どういうわけか私はエラーが発生します。 AddMyServiceDependenciesのすべてのコードパスの戻り値ではありません –