对于那里的任何RIA服务专家,任何人都知道如何增加返回Silverlight客户端的RIA Services查询数据的数据缓冲区大小上限?
我有一个RIA服务查询,它返回一个父实体以及作为数据响应的一部分返回的相当多的子实体集合。我的RIA服务查询的代码如下所示:
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)]装饰器将导致整个RIA服务查询,SearchContacts()失败并抛出异常,如果你增加150到500.我猜我是达到RIA服务的整体数据限制。
我搜索了一下这个问题,看起来你可以通过编辑Web配置设置来增加WCF Web服务的数据缓冲区大小(注意WCF服务,而不是RIA服务),但不确定是否也会这样做在RIA服务查询中工作。
如果有人遇到同样的问题并找到解决方案,请回复。
提前谢谢, 约翰答案 0 :(得分:1)
答案 1 :(得分:0)
我假设从服务器引发错误?
或者您是否遇到了客户端的开销?我在客户端遇到了无法识别的缓冲区大小限制(虽然我确定它们在那里)。
在传输大量数据时,您需要提高WCF服务的缓冲区大小。我现在没有特定的参考资料,但是在web.config WCF缓冲区大小上进行搜索,你应该得到一些点击。
它生成这种方式很好,因为您可能不希望由于生成时数据恢复而打开带宽问题。虽然我记得在我第一次遇到这个时很难找到这些信息。