Breeze NoDbサンプル アプリで採用されているアプローチを採用し、Entity Framework を使用しない既存のアプリケーションのバックエンドにフックしようとしています (代わりに、再利用しようとしている既存のビジネス オブジェクトがあります)。
コントローラーが受信したクエリをビジネスオブジェクトへの呼び出しに変換してデータをフェッチ/保存する方法と、これらのクエリを最適化する方法を理解するのに苦労しています。
現在、NoDb サンプル アプリではTodoContext
、サーバー上のクラスがオブジェクトのメモリ内データベースとして機能し、TodoList
それらのオブジェクトをTodoRepository
クラスを通じてTodoController
. 次に、このリストを 1 つのアクションTodoController
として公開します。IQueryable<TodoList> TodoList()
これにより、クライアントは odata フィルター条件をサーバーに渡し、フィルター処理されたコレクションTodoList
(アイテムが odata 検索フィルターを指定している場合) を返すことができます。BreezeController のおかげで、これはすべて魔法のように自動的に行われると思います。
ここで、TodoList
何らかの形式のデータ ストア (既存のビジネス オブジェクト、SQL 以外のデータベース、mongo db、xml ファイルなど) に膨大な数の が格納されているとします。フィルター処理された結果をクライアントに返すことができるようにするためだけに、ストアをメモリ内オブジェクトに格納します。
サーバー上のデータ ストアからフェッチされるデータの量を減らすために、クライアント リクエストで使用可能なフィルター基準をどのように使用しますか? たとえば、「buy milk」を含むTodoList
アイテムのコレクションを取得したいのですが、すべての詳細アイテムをメモリにロードして見つけ出す必要はありません。私はむしろ、odata フィルター条件をネイティブ データ ストア クエリ (または、私の場合は既存のビジネス オブジェクトへの呼び出し) に変換したいと考えています。TodoItem
TodoList
それが理にかなっていることを願っています。
ありがとう!リチャード