2

LINQを使用してSharePointオブジェクトを取得するときに、舞台裏でどのような作業が行われているのかを誰かが理解するのを手伝ってくれませんか。たとえば次のようなコードを使用できます。

private IEnumerable<List> newLists;

var dt = new DateTime(2010, 3, 20);
var query = from list
            in clientContext.Web.Lists
            where list.Created > dt && list.Hidden == false
            select list;

newLists = clientContext.LoadQuery(query);
clientContext.ExecuteQuery();

それはどのように機能しますか?

リクエストはどのように見えますか?

私が見つけたドキュメントから:

CSOMを使用すると、リストやWebなどのクライアント側オブジェクトに対してLINQクエリを記述し、ClientContextクラスを使用してこれらのクエリをサーバーに送信できます。このアプローチを採用する場合、LINQ to SharePointではなく、LINQtoObjectsを使用してSharePointオブジェクトをクエリしていることを理解することが重要です。これは、LINQ式がCAMLに変換されず、CAML変換に関連するパフォーマンス上の利点が表示されないことを意味します。

それで、LINQ式がCamlリクエストに変換されると思ったので、少し混乱しました。それがどのように機能するのか理解できません。ExecuteQuery()メソッドの実行中にリクエストの詳細を確認するにはどうすればよいですか?リクエストを監視するためのツールを教えてください。

4

1 に答える 1

3

SPは内部でCAMLを使用します:SPランタイムはLinqをCAMLに変換し、SOAPリクエストまたはRESTステートメント(RESTfulサービスを使用している場合)を介して送信します:http://msdn.microsoft.com/en-us/library/ff798339.aspx(例を使って);

詳細はこちら: http: //msdn.microsoft.com/en-us/library/ff798464.aspx

これは役立つ場合があります:http://nikspatel.wordpress.com/2012/08/05/sharepoint-2010-data-querying-options-server-om-vs-client-om-vs-rest-vs-linq- vs-search-api /

于 2012-12-02T08:36:47.133 に答える