【发布时间】:2015-08-25 16:45:10
【问题描述】:
我有一个 MVC 6 应用程序,我需要在其上连接到不同的数据库(即物理文件但相同的模式),具体取决于访问它的人。 也就是说:Web 应用程序的每个客户都将其数据隔离在 SQL 数据库中(在 Azure 上,具有不同的性能、价格水平等),但所有这些数据库将共享相同的关系架构,当然还有实体框架上下文类。
var cadConexion = @"Server=(localdb)\mssqllocaldb;Database=DBforCustomer1;Trusted_Connection=True;";
services.AddEntityFramework().AddSqlServer().AddDbContext<DAL.ContextoBD>(options => options.UseSqlServer(cadConexion));
问题是,如果我以这种方式注册服务,我会将它绑定到具体客户的具体数据库,我不知道在中间件执行开始时我是否可以更改后者(这将是一个很好的点我就知道谁在按门铃)。
我知道我可以构造数据库上下文,将连接字符串作为参数传递,但这意味着我应该在运行时(在管道的早期)为每个请求创建数据库上下文,我不知道这是否可以可能是低效或不好的做法。此外,我认为这样我就无法将数据库上下文注册为服务以将其注入我的控制器...
对此的正确方法是什么?有人在生产中使用类似的配置吗?
提前致谢
【问题讨论】:
标签: azure-sql-database asp.net-core asp.net-core-mvc entity-framework-core