如何在这个复杂的设置中配置实体框架连接
假设您有1个Web应用程序,并且您为50个州中的每个州运行相同的代码库。由于存储数据的合法性,每个州必须拥有自己的独立数据库,即使它们的名称和实际数据除外都是相同的。将应用程序保存在单个代码库中。您在web服务器上有50个应用程序实例,每个实例在web.config中都有不同的连接字符串。如何在这个复杂的设置中配置实体框架连接
然后你想先用migraitons使用EF 5代码。 我希望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服务器上的代码时,使用不同web-config文件分别托管相同代码的实例是一件难事。
意见建议?解决方案?最佳实践?
谢谢!
您定义的每个上下文类都会创建一个新模型,在绝大多数情况下,您只需要1个模型,因此每个应用需要1个上下文类。另外,如果在不同上下文中的实体之间存在导航属性,则它们将无法按预期工作。 这样,您只需要在每个web.config文件中使用1行来指定连接字符串。
查看本教程,了解如何使用多种实体类型创建模型:http://msdn.microsoft.com/en-us/data/jj193542