У меня есть приложение ядро asp.net Web API приложение с 2 контроллерами OracleController.csASP WEB API множественным DbContext
[Route("api/[controller]")]
public class OracleController : Controller
{
private readonly OracleDbContext _db;
public HeatsController(OracleDbContext context)
{
_db = context;
}
...
protected override void Dispose(bool disposing)
{
if (disposing)
{
_db.Dispose();
}
base.Dispose(disposing);
}
}
SqlServerController.cs
[Route("api/[controller]")]
public class SqlServerController: Controller
{
private readonly SqlServerDbContext _db;
public HeatsController(SqlServerDbContext context)
{
_db = context;
}
...
protected override void Dispose(bool disposing)
{
if (disposing)
{
_db.Dispose();
}
base.Dispose(disposing);
}
}
Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped(_ => new OracleDbContext(Configuration["Data:OracleConnectionString"]));
services.AddScoped(_ => new SqlServerDbContext(Configuration["Data:SqlServerConnectionString"]));
}
SqlServerDBContext.cs
public class SqlServerConfig : DbConfiguration
{
public SqlServerConfig()
{
SetProviderServices("System.Data.SqlClient",
System.Data.Entity.SqlServer.SqlProviderServices.Instance);
}
}
[DbConfigurationType(typeof(SqlServerConfig))]
public class SqlServerDbContext : DbContext
{
public SqlServerDbContext()
: base("name=SqlServerDbContext")
{
}
public SqlServerDbContext(string nameOrConnectionString) : base(nameOrConnectionString)
{
}
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
...
}
}
После запуска приложения я могу получить доступ только к одному DBC-контексту. Например, если я вызываю какой-то метод из OracleController, он отлично работает, но методы из SqlServerController не работают, они бросают исключение. «В поставляемом SqlConnection не указывается начальный каталог или AttachDBFileName». Он работает так же, если я сначала вызову методы из SqlServerController.
У вас есть базовый DbContext для ваших контекстов db? Я имею в виду родительский класс. –
Оба наследуются от DbContext; Открытый класс OracleDbContext: DbContext {...} – Stopee
Хорошо, у вас нет пользовательского родительского класса. Я думаю, вам нужно просмотреть свой метод ConfigureServices, у меня есть это для настройки Sql Server DbContext: services.AddEntityFrameworkSqlServer(). AddDbContext(); –