Службы автозаполнения Silverlight и службы RIA WCF: весь список возвращается клиенту? - PullRequest
0 голосов
/ 23 сентября 2010

У меня есть база данных, которая в конечном итоге будет содержать тысячи записей и будет выполнять поиск в этом списке с помощью элемента управления автозаполнения Silverlight и служб WCF RIA.Я использую базовую реализацию без каких-либо параметров для «GetXXXQuery» в источнике данных моего домена:

public IQuerable<XXX> GetXXXs()
{
    return this.ObjectContext.XXXs;
}

Я буду использовать возвращаемое значение этого запроса в автозаполнении, используя «Имя» в качестве ValueMemberPath.

Мой список объектов теперь довольно мал, поэтому очень быстро перечислить все имеющиеся у меня записи.Мой вопрос: как только мой список записей станет больше или если на сервер попадет больше людей, эффективна ли эта реализация?Возвращает ли он полный список записей в моей базе данных, или объект IQueryable каким-то образом разрешает запрос, основанный на строке в моем окне автозаполнения, эффективно возвращая небольшое подмножество записей из моей базы данных?

Спасибо,Dennis

1 Ответ

0 голосов
/ 23 сентября 2010

Если вы добавите поисковый запрос в запрос RIA Linq, т.е. добавите предложение where в запрос RIA Linq, он будет разрешен на стороне сервера.Только результаты сопоставления будут переданы обратно, а не вся таблица *.

IQuerable <> запросы фактически сериализуются на клиенте службами Ria и передаются на сервер для выполнения.Блестящая система.Особенно полезно для подкачки / поиска миллионов записей.

* ( Примечание. Если вы получаете много совпадений для данного термина, вам может потребоваться решить, возвращать ли ограниченное количество записей. Вы также не хотите начинать поиск, если, по крайней мереНабрано 3 символа).

...