4

私は Breeze.js のドキュメント (ちなみに素晴らしいドキュメント) を読みましたが、EntityManager については疑問があります。

次のファクトリ メソッドがあるとします。

  var createManager = function () {
        return new breeze.EntityManager({
            serviceName: serviceName,
            metadataStore: store
        });
    };

次に、Entitymanager の 2 つのインスタンスを定義します。

em1 = createManager();
em2 = createManager();

通話の場合

em1.saveChanges();

em2変更も保存しますか?

同じキャッシュem1を共有しますか?em2

そうでない場合、Singleton EntityManager を作成する必要がありますか? 私のプロジェクトでは、多くの場所で EntityManager にアクセスし、それらの間でエンティティを交換するため、どのアーキテクチャに従うのが最適な (または正しい) かわかりません。

4

1 に答える 1

7

エンティティ マネージャーは、クライアント上で独自のデータ コンテキストとして機能すると思います。em1 と em2 を作成すると、2 つの異なるマネージャーが作成されるため、それらは互いに独立して保存されます。複数の場所で同じ entitymanager を参照したい場合 (これは利点の 1 つです)、javascript モジュール パターンを使用して、作成したインスタンスを参照できます。

私が好む手法は、datacontext というモジュールを作成することです。エンティティ マネージャーと、そよ風を取り巻くその他のカスタム機能を所有しています。他のすべてのモジュールはこのデータコンテキストを参照し、データを要求するだけです。データコンテキストは、残りのモジュールからそよ風を隠します。唯一の方法ではありませんが、適切な分離パターンに従うので気に入っています。

お役に立てれば。

于 2012-11-21T13:20:48.730 に答える