asp.net-core – 具有独立数据库的ASP.NET Core
我想在中央服务器上为多个客户创建一个带有EF Core的ASP.NET Core Web应用程序.每个客户都应该拥有自己的数据库,通过从属于客户的测量设备读取数据来填充.
我找到了建议创建多个数据库上下文的解决方案.这个问题是它不可扩展.我事先并不知道客户/数据库的数量.可能是10,可能是100. 另一种解决方案可能是在IIS中创建单独的应用程序(为简单起见,我们只讨论Windows和IIS).每个应用程序都有自己的路径和自己的appsettings.json,它指定数据库连接字符串.这样做的问题是需要大量磁盘空间来复制(自包含)应用程序和大量维护工作. 问题: 1)有没有办法在appsettings.json中给定多个连接字符串动态创建数据库上下文列表? 2)有没有办法在IIS中只保留一个物理安装,但有多个站点,每个站点都使用不同的appsettings.json启动应用程序,或者可能是一个启动参数,告诉应用程序从appsettings.json使用哪个连接字符串? 3)有没有一种完全不同的更好的方法来实现它? 解决方法
我看到这是一个老问题,但这是我现在正在使用的场景.
如果您的租户具有相同的架构和不同的数据库,则正确的方法是使用一个主上下文来检索连接字符串,使用另一个上下文连接到不同的租户. 在一个非常常见的情况下,您可以根据主机访问一个租户或另一个租户,这可能是解决方案: >从主上下文中获取连接字符串 public class ContextTenant : IdentityDbContext<ApplicationUser,ApplicationRole,int>,IContextTenant { private readonly string _tenantDatabase; public ContextTenant(DbContextOptions<ContextTenant> options,ITenantProvider tenantProvider) : base(options) { _tenantDatabase = tenantProvider.GetTenantDatabase(); SeedData.Initialize(this); } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseMySQL(_teanantDatabase); base.OnConfiguring(optionsBuilder); } ... create DbSets other operations ... } 然后检索连接字符串: public class WebTenantProvider : ITenantProvider { private readonly string _tenantDatabase; public WebClientProvider(IHttpContextAccessor httpAccessor,ContextMaster dataContext) { var host = httpAccessor.HttpContext.Request.Host.Host; _tenantDatabase = dataContext.GetTenantDatabaseFromHost(host); } public string GetTenantDatabase() { return _tenantDatabase; } } public interface ITenantProvider { string GetTenantDatabase(); } 你的第二个问题也很有趣,因为我在这里有另一个问题.我的应用程序本地化资源是可编辑的,我从数据库中获取它们而不是Regx文件,因此每个租户都有自己的资源,他们可以编辑它们. COuld可以只有一个应用程序包含所有文件,但是为不同的主机启动该应用程序的不同实例?如果这是可能的,我们不需要连接字符串的东西,因为每个实例都将具有所有独立的… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 从经典的ASP到.net c#或vb?
- asp.net-mvc-5 – Visual Studio 2015 MVC项目模板访问被拒
- 如何在ASP.net runat =’server’标记中使用传统的HTML id属
- 单元测试 – 如何在MVC 6中存根/模拟AuthenticationManager
- 什么{“d”:“”}表示在asp.net webservice响应中
- asp.net-core-1.0 – Asp.Net Core 1.0 RTM中CreateIdentit
- SignalR的简单实现消息广播
- 如何在ASP.NET中运行时更改FormsCookieName
- asp.net – 使用简单的ActionFilterAttribute运行时出错
- asp.net-mvc – MVC 3.0编辑可变长度列表并使用PRG模式
- asp.net-mvc-2 – asp.net-mvc2 – 不使用Model的
- TFS 2010 流程、报表、升级相关联结
- asp.net-core – 在.Net 5 Core beta2中找不到Sy
- 是否可以使用ASP.NET ScriptManager来使用Window
- asp.net – 从DataContext缓存数据
- asp.net – 如何以编程方式设置Elmah电子邮件的收
- asp.net – ‘WebForm_DoPostBackWithOptions’在
- 使用ASP.Net编辑表格 – Quick’n Dirty
- asp.net – .Net Core 2 Spa模板与角度材料
- asp.net – web.config使用规则将非www或非https