C#.NET实体框架多租户最佳实践

时间:2017-11-17 21:47:51

标签: c# .net entity-framework

考虑以下代码段:

public class DatabaseContext : DbContext
{
   public DatabaseContext(String connectionString) : base(connectionString)
   {            
   }
}

public class ContextNameDatabaseContext : DatabaseContext
{
   public ContextNameDatabaseContext(String connectionString) : base(connectionString)
   {
   }
}

有人说在为多租户解决方案构建后端时最佳做法是每个客户端都有自己的数据库并保持数据状态,直到用户注销/退出?

在这个实例中使用这些类的开发人员需要注意并注意何时以及如何使用类,其中'DatabaseContext'类充当'ContextNameDatabaseContext'类的基础。

请告知任何想法或建议。

1 个答案:

答案 0 :(得分:0)

一种方法是将所有数据库连接字符串作为参数保留在数据库中。但是你必须保证它是加密的。

然后在您的数据库层,您可以在解密和相应地构建连接字符串后以纯文本形式传递连接:

type user = {
  id: string,
};

const thing = function(): Promise<user[]> {
  return new Promise(getData);
};

const getData = function(callback) {
  setTimeout(() => {
    callback([]);
  }, 1000);
};

如果您使用.NET Core将连接字符串作为依赖项注入,也可以使用public class MyDatabase: DbContext { public MyDatabase(string connString) { this.Database.Connection.ConnectionString = connString; } public DbSet<Order> Orders{ get; set; } }