在多租户、单个 Web 应用程序中使用 EF 的数据库连接注意事项

本文关键字:EF 注意事项 数据库连接 应用程序 Web 单个 | 更新日期: 2023-09-27 18:33:51

我们正在编写单页应用程序(SPA),其中用户在成功登录后连接到不同的数据库。当用户经过身份验证和授权时,他们的"配置文件"将包含他们可以连接到的 ldatabse ID。

我的问题围绕着实体框架和 ASP.NET MVC(和Web API)

  • 是否可以在运行时(用户登录后)使用 EF 连接到其他数据库。我无法使用 web.config 中的连接字符串,因为它会有所不同...如果可能的话,任何例子将不胜感激。
  • 由于创建连接是昂贵的操作,我应该考虑任何性能优化吗?我应该尝试在第一个用户登录时为 DB 创建一个连接池,还是应该为我预先拥有的每个数据库创建池(嗯......

在多租户、单个 Web 应用程序中使用 EF 的数据库连接注意事项

如果不同的数据库具有相同的结构,并且您可以使用相同的模型,那么您应该能够连接到不同的数据库。ObjectContext 和 DbContext 都具有构造函数,该构造函数采用可以是连接字符串的字符串。请注意,ObjectContext 需要包含项目名称/位置的实体连接字符串。我相信连接是自动池化的。除非测试表明这会导致性能问题,否则我不会尝试在此处进行任何优化。