C# RIA中LinqToEntitiesDomainService的NHibernate等价物

C# RIA中LinqToEntitiesDomainService的NHibernate等价物,c#,silverlight,nhibernate,linq-to-entities,wcf-ria-services,C#,Silverlight,Nhibernate,Linq To Entities,Wcf Ria Services,将实体框架与RIA域服务一起使用时,域服务继承自LinqToEntitiesDomainService,我想这允许您在低级别(客户端)上进行LINQ查询,并传播到ORM中;这意味着所有查询都是在数据库上执行的,只有相关的结果才会检索到服务器,从而检索到客户端 例如: var query=context.getCustomerQuery()。其中(x=>x.Age>50) 现在我们有一个域服务,它继承自DomainService,并通过NHibernate会话检索数据,如下所示: virtual

将实体框架与RIA域服务一起使用时,域服务继承自
LinqToEntitiesDomainService
,我想这允许您在低级别(客户端)上进行LINQ查询,并传播到ORM中;这意味着所有查询都是在数据库上执行的,只有相关的结果才会检索到服务器,从而检索到客户端

例如:

var query=context.getCustomerQuery()。其中(x=>x.Age>50)

现在我们有一个域服务,它继承自DomainService,并通过NHibernate会话检索数据,如下所示:

virtual public IQueryable<Customer> GetCustomers()
{
    return sessionManager.Session.Linq<Customer>();
}
virtualpublicIQueryable GetCustomers()
{
返回sessionManager.Session.Linq();
}
这种方法的问题是,如果不将整个表检索到服务器(或客户端)并在那里进行过滤,就不可能进行特定的查询

有没有办法让LINQ查询在RIA上与NHibernate协同工作,就像它与EF协同工作一样?如果不是这样,我们愿意换成英孚,因为这对性能的影响太严重了


谢谢。

您是否观看了SQL profiler并查看了所查询的内容?当您使用LINQ时,查询在此方法中构建,但实际执行直到需要时才会发生

因为LINQ提供程序将可iquable LINQ表达式树转换为Criteria,所以工作得很好。如果您在客户机上实际使用LINQ进行筛选,或者使用Silverlight数据源执行等效的筛选,则只返回请求的记录。该查询在数据库服务器上转换为适当的WHERE子句


换句话说,您不是在检索所有记录,然后在服务器上使用那里的代码示例进行过滤。客户机上的筛选器会一直转换到数据库服务器,并且筛选器会出现在那里。

谢谢。我也意识到了这一点。我忘记添加对System.ServiceModel.DomainServices.Client的引用,这就是为什么我无法使查询正常工作。非常感谢