【问题标题】:multiple databases with same structure具有相同结构的多个数据库
【发布时间】:2011-04-15 14:05:37
【问题描述】:
在教义2中处理不同基础但具有相同架构的最佳方法是什么。目前我
- 为每个数据库分别生成实体,为每个元数据对象添加命名空间和数据库名称,将它们放在不同的命名空间(XXX\Base\EntityClass)中,但别名相同
- 为每个基地创建一个 EntityManager(即使它们共享相同的连接)
- 创建一个代理,将调用传递给多个 EntityManager 并收集响应
- 在一个输出中合并响应
是否有更简单的方法来处理学说2 中的多个基础?
【问题讨论】:
标签:
php
database
orm
doctrine-orm
multiple-databases
【解决方案1】:
我无法回答学说 2,但我在 C# 中执行此操作。
- 一组实体,具有强名称和强类型,根据应用程序其余部分的需求进行定义。这会映射架构,但不绑定到任一数据库。
- 一个门面,知道您当前正在使用哪个数据库,并将请求定向到两个数据库之一...
- 单独的数据访问命名空间,处理一组通用操作,并将结果填充到一组实体中,这些实体通过外观返回给请求者。
- 基于从数据库目录读取 scema 的静态代码生成器非常有用。如果您可以推断出您需要了解的有关其他数据库的所有信息,您可能希望选择一个作为模型。
- 动态代码生成器也很有用,用于插入、更新、where 子句等。
- 在支持所有这些的框架上投入一些时间。确定您是否需要在运行时保留元数据,以及是否主要用于支持查询或更改操作。提供从任一数据库的结果集中提取数据的通用方法,以便您可以将强命名和类型化的结果集返回到您的应用程序,而无需考虑底层数据库。