0

doctrine2 で異なるベースを処理するための最良の方法は何ですか?同じスキーマを使用します。現在私は

  1. データベースごとに個別にエンティティを生成し、名前空間とデータベースの名前をすべてのメタデータ オブジェクトに追加し、それらを異なる名前空間 (XXX\Base\EntityClass) に配置しますが、同じエイリアスを使用します。
  2. ベースごとに 1 つの EntityManager を作成します (同じ接続を共有している場合でも)
  3. 複数の EntityManagers に呼び出しを渡し、応答を収集するプロキシを作成する
  4. 回答を 1 つの出力にマージする

doctrine2 で複数のベースを処理する簡単な方法はありますか?

4

1 に答える 1

0

doctrine2 についてはお答えできませんが、これは C# で行っています。

  1. アプリケーションの残りの部分が必要とするものに関して定義された、厳密な名前と厳密な型を持つエンティティの 1 つのセット。これはスキーマをマップしますが、どちらのデータベースにも関連付けられていません。
  2. 1 つのファサードは、現在使用しているデータベースを認識し、リクエストを 2 つのうちの 1 つに転送します...
  3. 共通の一連の操作を処理するデータ アクセス名前空間を分離し、結果を単一のエンティティ セットに入力します。これは、ファサードを通じてリクエスタに返されます。
  4. データベース カタログから scema を読み取ることに基づく静的コード ジェネレーターは便利です。他のデータベースについて知る必要があるすべてを推測できる場合は、モデルとして 1 つを選択することをお勧めします。
  5. 動的コード ジェネレーターは、挿入、更新、where 句などにも役立ちます。
  6. これらすべてをサポートするフレームワークに時間を投資してください。実行時にメタデータを保持する必要があるかどうか、およびそれが主にクエリをサポートするためなのか操作を変更するためなのかを決定します。いずれかのデータベースの結果セットからデータを抽出するための共通の方法を提供して、基礎となるデータベースに関係なく、厳密に名前が付けられ、型指定された結果セットをアプリケーションに戻すことができるようにします。
于 2011-04-15T14:15:47.463 に答える