将现有的ASP.NET Web窗体应用程序转换为多租户

时间:2014-10-13 13:26:19

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

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

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

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

问题:

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

2)最重要的一个:如何根据用户表中的字段将entityframework连接到不同的数据库?目前,数据库是从web.config设置的。我想用尽可能少的代码更改来做到这一点!

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  1. 确定不需要拆分的公用表。
  2. 将拆分器字段添加到另一个表中。
  3. 将每个用户链接到拆分器值。
  4. 为每个EF linq查询添加XXX.Where( => .Splitter = SplitterValue)条件。也许你可以在全球范围内做到这一点,但这取决于你的架构。
  5. 重建索引以涵盖该查询