我使用 Ria Service domainservice 进行数据查询。
在我的数据库中,有一个包含名字、姓氏的人表。然后我使用 EF/RIA 服务进行数据处理。
然后我创建一个过滤器视图模型来捕获用户输入,基于它的输入,我构造一个 linq 查询来访问数据。
在服务器端,person 的默认 DomainService 查询是:
public IQueryable<Person> GetPerson()
{
return this.Context.Person;
}
在客户端,过滤器的 linq 查询类似于(我在这里使用包含函数):
if (!String.IsNullOrEmpty(this.LastName))
q = q.Where(p => (p.LastName.Contains(this.LastName)));
生成的 linq 查询类似于(调试时,我明白了):
MyData.Person[].Where(p => (p.LastName.Contains(value(MyViewModel.PersonFilterVM).LastName) || p.Person.LegalLastName.Contains(value(MyViewModel.PersonFilterVM).LastName)))
当我运行该应用程序时,我将“Smith”作为姓氏进行搜索,但结果与“Smith”完全无关!
如何解决?