提问人:Anjo 提问时间:11/12/2023 最后编辑:marc_sAnjo 更新时间:11/12/2023 访问量:79
如何使用 Entity Framework Core 编写可缩放代码以进行自动缩放
How to write scalable code using Entity Framework Core for autoscaling
问:
在学习如何编写可缩放应用程序时,我遇到了一个与 Entity Framework Core (EF Core) 相关的问题。EF Core 在使用新数据库时利用连接字符串、和迁移。DbContext
因此,每次添加新数据库时,都需要提供特定的详细信息,例如连接字符串。在自动缩放的上下文中,由于要添加的数据库的确切数量及其相应的连接字符串仍然未知,因此出现了挑战。
经过研究,我发现可以创建一个工厂来动态生成实例。方法如下:DbContext
DbContext
public class DbContextFactory
{
private readonly IServiceProvider _serviceProvider;
public DbContextFactory(IServiceProvider serviceProvider)
{
_serviceProvider = serviceProvider;
}
public DbContext CreateDbContext(string databaseName)
{
var optionsBuilder = new DbContextOptionsBuilder<DbContext>();
optionsBuilder.UseSqlServer(GetConnectionStringForDatabase(databaseName));
return ActivatorUtilities.CreateInstance<DbContext>(_serviceProvider, optionsBuilder.Options);
}
private string GetConnectionStringForDatabase(string databaseName)
{
// get connection string for each database
}
}
对我来说,它仍然不能解决问题,因为我们必须知道连接字符串。
如何开发动态生成连接字符串和实例的代码,以有效管理自动缩放的不可预测性?DbContext
答: 暂无答案
评论