2011-07-03 10 views
0

これはSharePoint +リポジトリの設計に関する質問です。私の知る限り、SharePointは適切なリポジトリアプローチのための非常に似通った雰囲気ではありません。しかし、リポジトリ実装を持つパターンガイダンスがあります。そのコードベースは基本的に入力パラメータとしてSPWebをとり、クエリ/更新などを行います。SharePointとリポジトリ

私のクエリはそこにあります。リポジトリであるという事実は、SPWebを渡すべきではなく、SPContextから取得することを意味します。 Current.Webはそれをリポジトリ内で使用することになります。 SPWebが入力として扱われるという事実は、UIレイヤー/サービスレイヤーがSPWebをメソッドに渡す必要があることを意味します。これは、何らかの形で私にとって魅力的ではない方法です。

いくつかのアドバイスplsは

乾杯

答えて

1

SPWebオブジェクトには、コンテキストとアクセス許可の情報、およびサイトの詳細が含まれています。これをパラメータとして持つことで、ユーザコンテキストオブジェクトの代わりに昇格オブジェクトを使用するようなことを簡単に行うことができます。接続文字列のようなサイトURLを使用することもできますが、それははるかに多くの作業になり、呼び出し元は常に適切なSPWebオブジェクトを利用できます。

あなたのコードは理想的には使用するデータストアから独立しているはずですが、SharePointは標準の.net/sqlシステムで構築できるきれいなモジュラコードのようなものではありません。時には近づいてくることもありますが、この場合は、実際にはそれほど努力する価値はありません。コールコードはSharePointに依存しており、リスト以外の場所に移動する可能性は低いです。

+0

トントムありがとう。それははっきりした答えです。 – VJVRR

0

ただの思考が、あなたは常に、接続文字列のようなサイト/ウェブのURLを使用して、リポジトリ層で独自のSPSite/spwebオブジェクトをインスタンス化でき、SPSiteオブジェクト/ spwebオブジェクトを接続オブジェクトとして使用します。この方法で、現在のspcontextを持たないアプリケーションからコードを再利用する必要があった場合、リポジトリクラスをWebリクエストの外で使用することができます。

独自のspsite/spwebオブジェクトと現在のspcontextオブジェクトの作成には多少のパフォーマンス上の問題があるかもしれませんが、どれくらいのものかはわかりません。

+0

私が知りたいと思っていた答えDavidとthatsをありがとう。パフォーマンスの問題を除いて、私はこれがPatterns&Practiceガイダンスの一部ではないことを紛らわしかった。 Add(T Entity、SPWeb web)のサンプルコードスニペットを私に教えてください。これは、ListItemRepository(SharePoint上でCRUD操作を実行するために内部的に使用する他のすべてのドメインオブジェクトの共通リポジトリのようなものです)です。 – VJVRR

+0

独自のspsite/spwebオブジェクトを作成する場合は、適切に処分するようにしてください。普通の練習では文を使用しています。 – David

+0

David、正しく説明できません。 "この方法では、現在のspcontextを持たないアプリケーションからコードを再利用する必要がある場合、リポジトリクラスをWebリクエストの外で使用することができます。これはあなたのコメントです。私の質問はパターン&プラクティスガイダンスではSPWebは外部で生成されるのではなく、入力として使用されるということです。私は理由を尋ねています - それはSharePoint固有の制限です。 – VJVRR