具有相同结构的多个数据库

时间:2011-04-15 14:05:38

标签: php database orm doctrine-orm multiple-databases

doctrine2处理不同基础但使用相同模式的最佳方法是什么。目前我

  1. 为每个数据库单独生成实体,将数据库的名称空间和名称添加到每个元数据对象,将它们放在不同的名称空间(XXX \ Base \ EntityClass)中,但具有相同的别名
  2. 每个基础创建一个EntityManager(即使它们共享相同的连接)
  3. 创建一个代理,将调用传递给多个EntityManagers并收集回复
  4. 合并一个输出中的响应
  5. 在doctrine2中处理多个碱基是否有更简单的方法?

1 个答案:

答案 0 :(得分:0)

我无法回答doctrine2,但我在C#中这样做。

  1. 一组具有强名称和强类型的实体,根据应用程序的其余部分需求进行定义。这会映射架构,但不会绑定到任何一个数据库。
  2. 一个外观,知道您目前正在使用哪个数据库,并将请求指向两个中的一个......
  3. 单独的数据访问命名空间,用于处理一组公共操作,并将结果填充到单个实体集中,这些实体通过外观返回给请求者。
  4. 基于从数据库目录中读取scema的静态代码生成器非常有用。如果您可以推断出您需要了解的关于其他数据库的所有信息,您可能希望选择一个作为模型。
  5. 动态代码生成器对插入,更新,where子句等也很有用。
  6. 在框架中投入一些时间来支持所有这些。确定是否需要在运行时保留元数据,以及它是否主要用于支持查询或更改操作。提供从数据库的结果集中提取数据的通用方法,以便您可以将强命名和类型化的结果集返回到应用程序,而无需考虑底层数据库。