Как сделать именованные мультизапросы с помощью C # Facebook SDK - PullRequest
0 голосов
/ 23 ноября 2011

Я обновляю устаревший код из старой версии 3.0 SDK C # Facebook до новой версии 5.3.2.

Вкл. http://developers.facebook.com/docs/reference/fql/ это показывает, что вы можете сделать несколько запросов, например:

"query1":"SELECT uid, rsvp_status FROM event_member WHERE eid=12345678"
"query2":"SELECT name, url, pic FROM profile WHERE id IN (SELECT uid FROM #query1)"

В старом API у вас был бы просто словарь, в котором каждый запрос был сопоставлен с его именем:

"page_admin_list","SELECT uid, page_id, type FROM page_admin where uid = 1234567890"
"permissions_response","SELECT uid, read_stream, status_update, photo_upload, publish_stream, offline_access FROM permissions WHERE uid IN (SELECT page_id FROM #page_admin_list)"

В каждом из примеров обратите внимание на # во вложенном запросе. Однако я не уверен, как это сделать с помощью нового синтаксиса, поскольку он принимает только строку [] в качестве параметра.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2012

Начиная с Facebook C # SDK v6, вы можете выполнять именованные запросы, используя следующий метод.

var fb = new FacebookClient("access_token");
dynamic result = fb.Get("fql",
    new
        {
            q = new
            {
                id = "SELECT uid from user where uid=me()",
                name = "SELECT name FROM user WHERE uid IN (SELECT uid FROM #id)",
            }
        });
0 голосов
/ 23 ноября 2011

Найден этот ответ ( edit : это относится к более ранним версиям SDK, для версии 6 и выше см. Ответ Прабира ): я должен ссылаться на каждый запрос с помощью # query0, # query1 и т.д ...

Или я могу использовать метод Get () вместо метода Query ()

var queries = 
    new Dictionary<string, object>
    {
        { "FamDamly", "select uid from family where profile_id = me()" },
        { "FamDetails", "select uid, first_name from user where uid in #FamDamly" }
    };
client.Get(queries);
...