私はMVCコアで作業している新しいMVCプロジェクトに、優れたデータベースライブラリNReco.Dataを使用しています。Dot Netコアのデータベース接続の依存関係注入について理解しています
私は可能な限り依存性注入を使用しようとしています。しかし、混乱しているのはこれです。私のStartup.csの下のコードに基づいて、別のデータベース(または接続文字列)を指す別のDbDataAdapter
をどのようにインスタンス化できますか?
public void ConfigureServices(IServiceCollection services)
{
var dbconnectStringAppSettings = Configuration["DBConnectString"];
services.AddDbContext<MisoIRListservDbContext>(options => options.UseSqlServer(dbconnectStringAppSettings));
InjectNRecoDataService(services);
// Repositories
services.AddScoped<ListSettingRepository>();
services.AddScoped<ListCategoryRepository>();
services.AddScoped<MailingListRepository>();
services.AddScoped<LISTSERVRepository>();
// Services
services.AddScoped<ListServEmailMailingListService>();
services.AddScoped<ListCategoryMailingListService>();
services.AddMvc();
}
private void InjectNRecoDataService(IServiceCollection services)
{
services.AddSingleton<IDbFactory, DbFactory>(servicePrv => new DbFactory(SqlClientFactory.Instance)
{
LastInsertIdSelectText = "SELECT @@IDENTITY"
});
services.AddSingleton<IDbCommandBuilder, DbCommandBuilder>(servicePrv =>
{
var dbCmdBuilder = new DbCommandBuilder(servicePrv.GetRequiredService<IDbFactory>());
return dbCmdBuilder;
});
services.AddScoped<IDbConnection>(servicePrv =>
{
var dbCoreContext = servicePrv.GetRequiredService<MisoIRListservDbContext>();
var conn = dbCoreContext.Database.GetDbConnection();
return conn;
});
services.AddScoped<DbDataAdapter>();
}
マルチテナントデータアーキテクチャを調べます。 http://benfoster.io/blog/aspnet-core-multi-tenancy-data-isolation-with-entity-framework –