0

假设您有 1 个 Web 应用程序,并且为 50 个州中的每一个州运行相同的代码库。由于存储数据的合法性,每个州都必须拥有自己独立的数据库,即使它们除了名称和实际数据之外都相同。将应用程序保存在单个代码库中。您在 Web 服务器上有 50 个应用程序实例,每个实例的 web.config 中都有不同的连接字符串。

然后,您想首先将 EF 5 代码与 migraitons 一起使用。我希望 EF 5 使用 1 个指定的连接字符串。到现有的数据库。我不想为模型中的每个对象都有一个连接字符串。喜欢...

<add name="ProductsContext" connectionString=".....
<add name="UsersContext" connectionString=".....
<add name="LocationsContext" connectionString=".....

我想要 1 个连接字符串,例如

<add name="DefaultConnection" connectionString=".....

我该怎么做呢?

此外,如果我的模型中的每个对象都需要成为 dbcontext 的一部分,那么最好将它们放在单独的上下文中,如教程显示或可以/应该它们都在同一个上下文中,这将允许我只拥有一个“默认上下文”。你应该有多少上下文?

如果我让 EF 使用连接工厂并创建 3 个上下文,它会尝试创建 3 个数据库。

注意我不能以编程方式指定连接,因为应用程序的每个副本都连接到不同命名的数据库。

我真的很困惑 EF 想要我模型中的每个对象都有一个数据库。此外,如果他们有一种方法可以让 1 个代码库访问 50 个单独的数据库,并且知道在启动时要进入哪个数据库,而无需任何用户交互,那也很有帮助。当前,在需要更新网络服务器上的代码时,使用具有不同 web 配置文件的相同代码的单独托管实例是一个需要维护的婊子。

建议?解决方案?最佳实践?

谢谢!

4

1 回答 1

0

您定义的每个上下文类都会创建一个新模型,在绝大多数情况下,您只需要 1 个模型,因此每个应用程序只需要 1 个上下文类。此外,如果不同上下文中的实体之间存在导航属性,它们将无法按预期工作。这样,您只需要在每个 web.config 文件中使用 1 行来指定连接字符串。

查看本教程,了解如何创建具有多种实体类型的模型:http: //msdn.microsoft.com/en-us/data/jj193542

于 2013-03-04T21:39:25.287 回答