我打算在Silverlight项目中编写并使用某种标准API来将复杂的动态请求传递给WCF服务。
起初我想过使用QueryObject,如: UserQuery {int? AgeMin;诠释? AgeMax; string NameContains; string NameStartWith;}等等,如果某个属性不是null,而不是我们在它上面使用某种过滤器,那么逻辑运算符呢? (或者)我无法使用QueryObject指定这个逻辑。
所以我打算用谓词构建器编写某种标准API,它结合了AND,OR表达式,但我已经在服务器端使用NHibernate标准API,为什么不在Silverlight类库中将其从Nhibernate中删除呢?我在互联网上没有发现在Silverlight中使用NHibernate标准API的证据,这有点奇怪,不可能将它从Nhibernate中删除或者没有意义吗?为什么不使用它?对我而言,它看起来是一个很好的解决方案,比编写自己的API更好。
答案 0 :(得分:1)
在客户端构建查询不是一个好主意
包含查询构建器并允许用户在客户端编写自定义复杂查询的3d party DataGrid控件(Telerik,DevExpress,Infragistics)怎么样?
RIA Services如何公开数据库查询界面。
这听起来像陈词滥调。人们只是不断地重复它,因为他们在某处阅读它,但他们不知道为什么。
我不同意这一点,我认为在客户端编写自定义复杂查询的能力是面向数据的业务线应用程序的合理要求。
答案 1 :(得分:0)
添加到同行的答案 - 从不一个好主意,以获取在客户端构建的查询。在内联网或任何其他类型的应用程序
QueryObjects 是的最佳选择
您可以在客户端创建表达式(例如(Name like '%blah' or LastName like 'something') and Id > 5
),在服务器端创建表达式 - 使用.net的expression trees(另请参阅here和here),或者实现自己的引擎(general idea)。