在ASP.NET Core Web API中使用多个数据库是非常常见的。 实现这个目标的一种常见方法是使用实体框架(Entity Framework),它支持多个数据库提供程序。
步骤1:添加Provider包 在NuGet包管理器控制台中,安装Sybase和SQL Server提供程序的实体框架NuGet包。
Install-Package Microsoft.EntityFrameworkCore.SqlServer Install-Package Sybase.EntityFrameworkCore
步骤2:配置数据库连接 在appsettings.json文件中,添加配置连接字符串的部分,为每个数据库提供程序配置一个连接字符串。
{ "ConnectionStrings": { "SybaseConnection": "Data Source=[your_sybase_server];Initial Catalog=[your_sybase_database];Persist Security Info=True;User ID=[your_username];Password=[your_password]", "SqlServerConnection": "Server=[your_sql_server];Database=[your_sql_database];Trusted_Connection=True;MultipleActiveResultSets=true" } }
步骤3:在Startup.cs文件中配置DbContext 在Startup.cs文件的ConfigureServices方法中,配置EFDbContext。
services.AddDbContext
services.AddDbContext
步骤4:在控制器中使用DbContext 在您的控制器中,将IVacationRequestContext 注入描述请求的DbContext,并在需要时使用它。
public class VacationRequestsController : ControllerBase { private readonly SybaseDbContext _sybaseContext; private readonly SqlServerDbContext _sqlServerContext;
public VacationRequestsController(SybaseDbContext sybaseDbContext,
SqlServerDbContext sqlServerDbContext)
{
_sybaseContext = sybaseDbContext;
_sqlServerContext = sqlServerDbContext;
}
[HttpGet("sybase/{id}")]
public ActionResult GetSybaseRequest(Guid id)
{
var request = _sybaseContext.VacationRequests.FirstOrDefault(x => x.Id == id);
if (request == null)
{
return NotFound();
}
return Ok(request);
}
[HttpGet("sqlserver/{id}")]
public ActionResult GetSqlServerRequest(Guid id)
{
var request = _sqlServerContext.VacationRequests.FirstOrDefault(x => x.Id == id);
if (request == null)
{
return NotFound();
}
return Ok(request);
}
}
当您尝试访问即可在控制台中监视输出看到情况