【问题标题】:Convert existing ASP.NET web forms application to multi-tenancy将现有的 ASP.NET Web 表单应用程序转换为多租户
【发布时间】:2014-10-13 13:26:19
【问题描述】:

我有一个现有的 ASP.NET Web 表单站点,它使用实体框架连接到单个 SQL 数据库作为数据源。

我被要求将应用程序转换为多租户应用程序以满足新客户的需求。

代码库是相同的,我能看到的最简单的方法就是根据用户表中的字段将应用程序连接到数据库的不同副本。

问题:

1) 我在哪里存储用户?目前现有应用程序中只有一个用户表,我是否需要将其拆分到两个租户共用的第三个数据库?

2) 大问题:如何根据用户表中的字段将实体框架连接到不同的数据库?目前数据库是从 web.config 设置的。我想用尽可能少的代码更改来做到这一点!

【问题讨论】:

  • 多租户可能是一个巨大的话题。我强烈建议您阅读以下关于该主题的文章并清楚地了解您的要求,然后再决定采用特定方法。多租户数据架构msdn.microsoft.com/en-us/library/aa479086.aspx

标签: c# sql asp.net entity-framework


【解决方案1】:

如果使用 Code-First,我强烈建议在全局级别而不是在每个单独的查询上执行此操作。见https://github.com/jbogard/EntityFramework.Filters

【讨论】:

    【解决方案2】:

    我认为,在您的情况下,多租户只是应用程序中每个表内的拆分器。

    1. 确定不需要拆分的常用表。
    2. 将拆分器字段添加到其他表。
    3. 将每个用户链接到拆分器值。
    4. 向每个 EF linq 查询添加 XXX.Where(=>.Splitter=SplitterValue) 条件。也许您可以在全球范围内执行此操作,但这取决于您的架构。
    5. 重建索引以覆盖该查询

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-08
      • 2018-07-31
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 2017-09-18
      • 1970-01-01
      • 2013-12-23
      相关资源
      最近更新 更多