3

EF4 / POCOに基づいており、正常に機能している既存のリポジトリがあります。WCFデータサービスを使用してサービスレイヤーを追加し、いくつかのベストプラクティスのアドバイスを探しています。

これまでに、IQueryableプロパティを持つクラスを開発し、getterがリポジトリの「getallusers」メソッドをトリガーしました。これまでの問題は2つあります。

1)データサービスにどのフィールドがIDであるかを伝えるために、pocoオブジェクトのIDフィールドを装飾する必要がありました。これは、POCOオブジェクトが「純粋」ではないことを意味します。

2)オブジェクト間の関係を理解することはできません(これは明らかです)。

私はこのアプローチをやめました。おそらく、リポジトリからOBjectContextを公開し、EFのより多くの「自動」機能を使用する必要があると考えています。

WCF Data Servicesでリポジトリパターンを使用するためのアドバイスや例はありますか?

4

2 に答える 2

0

公開したいものと、それを使用する人についてもう少し詳しく説明していただけますか?

私たちのプロジェクトでこれまでに見た問題

  • MyRepository:ObjectcontextとMyDataService:DataServiceを使用するとロジックが分割されるため、ヘルパーを作成しました。しかし、リポジトリを継承できたと思います-(文字通り、これを入力したときに考えただけです!)
  • クエリおよび変更インターセプターは友達ですが、DRYを確保するためにヘルパー(または基本クラス)に委任する必要があります。つまり、リポジトリにすでにGetAllUsersがあり、myservice.svc / Usersが処理しないロジックを実行している場合は、フィルタリングを実行するためにクエリインターセプターを実装する必要があります。ここでも、DRYは、両方のリポジトリのヘルパー(またはベースメソッド)を意味します。とインターセプターが使用できます。
  • asp.netの互換性により、認証/承認をうまく利用できます。クエリインターセプターでは、表示が許可されているものだけを表示できるようにするための優れた方法です。

いくつかの罠...

  1. Flash / Flexベースの場合、Flash/FlexがHTTPPUT/MERGEまたはDELETEを使用できないという問題が発生する可能性があります。x-httpmethod-overrideを使用してこれを回避します

  2. javascript / jqueryの場合は、必ずjsonをオンにしてください

全体として、私はそれが本当に好きです。APIを公開するための超高速の方法であり、重いビジネスロジックがなければ、うまく機能します。

于 2011-05-13T07:26:42.430 に答える
0

実用性の問題だと思います。POCO を装飾すると、他に問題が発生することはありますか? そうでない場合は、おそらくそれが最善の方法です。

WCF Data Services と oData はかなり新しいものです。私もガイダンスを探していましたが、少し薄いようです。

于 2010-05-11T13:07:16.153 に答える