Как увеличить потолок размера буфера данных запросов RIA Services? - PullRequest
2 голосов
/ 15 декабря 2010

Любой гуру RIA Services знает, как увеличить максимальный размер буфера данных запросов RIA Services, возвращаемых клиенту Silverlight?

У меня есть запрос RIA Services, в котором он возвращает родительскую сущность вместе с несколькими коллекциями дочерних сущностей, возвращающимися как часть ответа на данные. Код для моего запроса RIA Services начинается так:

   1:  [EnableClientAccess()]
   2:  public class ContactsDomainService : LinqToEntitiesDomainService
   3:  {
   4:       [Query(ResultLimit = 150)]
   5:       public IQueryable SearchContacts(string jobFunction = default(string),
   6:                                                    string workPhone = default(string),
   7:                                                    string officeLocation = default(string),
   8:                                                    string firstName = default(string),
   9:                                                    string lastName = default(string),
  10:                                                    string address1 = default(string),
  11:                                                    string address2 = default(string),
  12:                                                    string city = default(string),
  13:                                                    int stateTypeId = 0,
  14:                                                    string zip = default(string),
  15:                                                    string email = default(string),
  16:                                                    Nullable departmentTypeId = null,
  17:                                                    Nullable sectionTypeId = null,
  18:                                                    Nullable divisionTypeId = null,
  19:                                                    Nullable governmentTypeId = null)
  20:       {
  21:            var results = from r in this.ObjectContext.Contacts
  22:                                       .Include("ContactAddresses")
  23:                                       .Include("ContactAddresses.CityType")
  24:                                       .Include("ContactAddresses.StateType")
  25:                                       .Include("ContactDepartments")
  26:                                       .Include("ContactDepartments.DepartmentType")
  27:                                       .Include("ContactDivisions")
  28:                                       .Include("ContactDivisions.DivisionType")
  29:                                       .Include("ContactEmails")
  30:                                       .Include("ContactGovernments")
  31:                                       .Include("ContactGovernments.GovernmentType")
  32:                                       .Include("ContactJobFunctions")
  33:                                       .Include("ContactJobFunctions.JobFunctionType")
  34:                                       .Include("ContactOffices")
  35:                                       .Include("ContactPhones")
  36:                                       .Include("ContactPhones.PhoneType")
  37:                                       .Include("ContactSections")
  38:                                       .Include("ContactSections.SectionType")
  39:                          select r;

Я подтвердил в ходе тестирования, что декоратор [Query (ResultLimit = 150)] вызовет сбой, запрос SearchContacts (), общий запрос службы RIA, и выдаст исключение, если вы увеличите 150 до 500. Я предполагаю, что я нарушение общего ограничения данных RIA Services.

Я немного погуглил по этой проблеме, и похоже, что вы можете увеличить размер буфера данных веб-службы WCF (обратите внимание на службу WCF, а не службу RIA), отредактировав настройки веб-конфигурации, но не уверен, что это также работа в запросе RIA Services.

Если кто-то сталкивался с такой же проблемой и нашел решение, пожалуйста, ответьте.

спасибо заранее, John

Ответы [ 2 ]

1 голос
/ 18 декабря 2010
0 голосов
/ 18 декабря 2010

Я предполагаю, что с сервера возникает ошибка?

Или вы сталкиваетесь с накладными расходами на клиенте? Я не сталкивался с заметным ограничением размера буфера на клиенте (хотя я уверен, что они там есть).

Вам необходимо увеличить размер буфера для служб WCF при транспортировке большого количества данных. У меня нет конкретной ссылки, доступной в данный момент, но я выполнил поиск по размеру буфера WCF web.config, и вы должны найти несколько совпадений.

Хорошо, что он генерируется таким образом, поскольку вы, вероятно, не хотите открывать проблему пропускной способности из-за восстановления данных при генерации. Хотя я помню, как мне было трудно находить информацию, когда я впервые осознал это.

...