2016-11-21 11 views
1

私はEntityFrameworkモデルを公開するwebAPI RESTサービスでAngular2 SPAを作っています。DTOとオブジェクトグラフ

最も簡単な方法は、単一のコントローラアクションで大きなオブジェクトグラフをロードし、JSONの大きな塊をクライアントに渡し、それをオブジェクトグラフを歩くときに分割することです。

オブジェクトグラフ内のオブジェクトごとにAPIアクションを作成し、必要に応じてJSクライアントがグラフを少しずつ引き上げるようにすることをお勧めしますか?

断片的なアプローチでは、さらに多くのコントローラとアクションが必要であり、それに応じて角度サービス、つまりより多くの作業が必要になります。私はちょうど塊茎を把握し、それを取得する必要がありますか?

+0

大きなオブジェクトグラフはどういう意味ですか?どのくらいの頻度でサーバーから取得されますか?このオブジェクトグラフで何をモデル化しようとしていますか? –

答えて

2

実際には、接続されたシナリオでも、接続されていないシナリオでも、Entity Frameworkを使用しているかどうかによって異なります。あなたのケースでは、データベースからデータを取得してクライアントに送信してからcontextを閉じてしまうので、DBContextはオブジェクトグラフに常時接続されていないというシナリオでは、Entityフレームワークを使用しています。私にとっては、それぞれのコントローラとアクションをそれぞれPOCOまたはDTOに分割することをお勧めします。これは、オブジェクトグラフ全体を一度に維持するのではなく、個々のオブジェクトを個別に維持してアタッチするのに役立ちます。切断されたシナリオでは、編集、削除、または大きなオブジェクトグラフで追加されたオブジェクトが決して分からないため、エンティティの編集または操作を開始するときに問題が表示されます。ただし、その更新を反映するために、クライアント側の各変更をサーバーに直接保守して操作する必要があります。

これがあなたの質問に答えるかどうかわかりませんが、それ以上の説明やコードサンプルが必要な場合は私は分かりません。私にお知らせください。

+0

私は大きなオブジェクトのエディタを書くときにラウンドトリップするとオブジェクト全体のグラフが厄介になります。個々のアイテムをCRUDしたいと思うでしょう。 私は、それぞれのPOCOに1つのコントローラウィットCRUDが必要だと思います。 –

+0

ああ、それも私に起こります。そのため、私は各POCOをコントローラに書き留め、各コントローラをクライアントのそれぞれの即時の変更で呼び出すことを終了しました。私の答えが役に立つか役立っていると思ったら、投票してください。ありがとうございました。 –

+0

私はT4または2のコントローラとTypeScriptバージョンのPOCOを扱うことができます。 –

1

1つのangle2ページレベルコンポーネントに対して1つのバックエンドアクションを作成する必要があると思います。ユーザーは余分なデータの読み込みを待つべきではなく、このページで必要とされるデータだけを待つべきです。

関連する問題