在startup.cs/appsettings定义两个不同的数据库.驻留在不同服务器上的Json文件



我有两个独立的数据库- Database1和database2。Database1在单独的服务器上,databse2在不同的服务器上。我需要插入数据从database1到Datbase2在我的c#编码。这就是我的启动文件看起来像:

public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<AckPackage.Data.AckContext>(options =>
options.UseSqlServer(
Configuration.GetConnectionString(DefaultConnection)));
}   


这是appsettings中Database1的连接字符串。json文件:

{
"ConnectionStrings": {
"DefaultConnection": "Server=TestServer;TrustServerCertificate=True;Initial Catalog=Database1;uid=test;pwd=test"
}}

我如何在startup.cs文件中定义database2的连接字符串或访问控制器中的database2以便将数据从一个数据库插入到另一个数据库。这就是我的控制器构造函数的样子

private readonly IEmployeeService _employeeService;
public readonly IConfiguration _configuration;
public readonly ILogger _logger;
private readonly IHttpContextAccessor _contextAccessor;
private readonly IWebHostEnvironment _environment;
public EmployeeController(IEmployeeService employeeService,
IConfiguration configuration, ILogger<EmployeeController> logger, IHttpContextAccessor contextAccessor, IWebHostEnvironment environment)
{
_employeeService = employeeService;
_configuration = configuration;
_logger = logger;
_contextAccessor = contextAccessor;
_environment = environment;
}

我只需要从database1 tableA插入数据Database2 tableB。如有任何帮助,不胜感激。

这是一种会产生很多副作用的问题。

首先,您应该知道的是,您不能使用不同的ConnectionString注册到相同DbContext的实例。

读一读,找出原因。

所以至少我们需要复制粘贴你的DbContext并重命名它来欺骗ASP.NET DI系统。

毕竟,您将拥有具有共享模式的多个DbContext。当您有多个DbContext时,请尝试阅读本文以了解迁移和其他内容。

试试。坏消息是,您必须为这两个版本更新两次迁移。

还有另一种方法。避免使用Dependency Injection:

照这篇文章说的做。这不是一件好事,因为你忽略了DI,你应该在任何你需要的地方手工构建dbcontext。

有一些关于迁移的事情,你应该在Startup.cs上使用相同的创建过程来处理它们。

最新更新