我有一个数据库,最终将包含数千条记录,并将使用Silverlight自动完成框控件和WCF RIA服务搜索此列表。我在我的域数据源中使用了没有任何参数的基本实现:“GetXXXQuery”:
public IQuerable<XXX> GetXXXs()
{
return this.ObjectContext.XXXs;
}
我将使用“Name”作为ValueMemberPath在自动填充中使用此查询的返回值。
我的对象列表现在非常小,所以列出我拥有的所有记录的速度非常快。我的问题是:一旦我的记录列表变得更大,或者如果有更多人访问服务器,这种实现是否有效?它是在我的数据库中返回整个记录列表,还是IQueryable对象以某种方式允许基于我的自动完成框中的字符串进行查询,从我的数据库中有效地返回一小部分记录?
谢谢,丹尼斯
答案 0 :(得分:0)
如果向RIA Linq查询添加搜索词,即在RIA Linq查询中添加where子句,则将在服务器端解析。只传回匹配的结果,而不是整个表*。
IQuerable&LT;&GT;查询实际上是由Ria服务在客户端上序列化的,并传递给服务器执行。辉煌的系统。特别适用于分页/搜索数百万条记录。
*(注意:如果您获得了给定术语的大量匹配项,您可能需要决定是否返回有限数量的记录。除非至少有3个字符,否则您也不想开始搜索已输入)。