2011-07-20 27 views
0

我要編寫和使用某種標準API的Silverlight項目通過複雜的動態請求WCF服務使用NHibernate的CriteriaAPI。是否有可能端口,並在Silverlight WCF以上

起初,我想過使用QueryObject,如: UserQuery {INT? AgeMin;詮釋? AgeMax;字符串NameContains;字符串NameStartWith;}等如果某些屬性不是空的,我們使用某種過濾器,但邏輯運算符呢? (和或)我沒有辦法使用QueryObject指定這個邏輯。

因此,我打算用謂詞構建器編寫某種標準API,它將AND和OR表達式結合起來,但我已經在服務器端使用NHibernate標準API,爲什麼不把它從Silverlight類庫中的Nhibernate中解壓出來呢?我沒有在Internet上找到關於在Silverlight中使用NHibernate標準API的證據,這有點奇怪,不可能將其從Nhibernate中剔除,或者它沒有任何意義?爲什麼不使用?對我來說,這看起來是一個很好的解決方案,比編寫自己的API更好。

回答

1

建立查詢客戶端上的是不是一個好主意

  1. 什麼包含查詢生成器,允許用戶編寫自定義的複雜查詢3D黨的DataGrid控件(Telerik的,DevExpress的,Infragistics的)在客戶端?

  2. 什麼RIA服務,暴露數據庫查詢界面。

這聽起來像是陳詞濫調。人們不斷重複它,因爲他們在某個地方閱讀它,但他們不知道爲什麼。

我並不同意這種看法,我想撰寫的客戶端自定義複雜查詢的能力是面向行的業務應用數據的合理要求。

0

添加到同行的答案 - 這是從來沒有一個好主意,以獲得在客戶端構建的查詢。在內聯網或任何其他類型的應用程序。
QueryObjects 的路要走。
您可以創建在客戶端(如(Name like '%blah' or LastName like 'something') and Id > 5)的表達,並在服務器副作用使用.NET的expression trees(也herehere看到),或實現自己的引擎(general idea)。

+0

表達式樹肯定是不長的路要走,安全風險大很多,你可以在樹中的任意MethodCall表達,所以它的basycaly遠程代碼執行。 –

+0

@亞歷克斯:好點。我會修改我的答案 –

相關問題