使用NHibernate,我需要能夠配置我的應用程序,以根據需要對特定的實體集合進行排序。NHibernate - 真正的動態排序
可配置的排序:
- 可能涉及多個屬性
- 可以按任意順序指定
- 可以在分類性能
- 可以通過自定義屬性進行排序指定遞增/遞減排序特性(即沒有相應的SQL/C#屬性 - 它被計算)
此功能是從現有的應用程序繼承而來的,其中部分SQL由管理員指定,並且SQL語句是動態構建/執行的。
每次我試圖通過一個解決方案,我開始變得與各種警報在我的腦海都會響起關於可維護性,性能,擴展性,安全性等泥水思考..
例如,我的數字管理員可以像這樣指定一個逗號分隔的字符串:
「日期遞增,名字遞增,姓氏DESC」
我可以分割字符串,並經過一個循環,一個case語句相匹配的屬性/分類配對,並呼籲.AddOrder(Order.Asc(「FirstName」))。但是,如何處理自定義屬性?我可以允許用戶指定用於計算自定義屬性的SQL,然後允許用戶按照他們的名字排序,但我似乎又回到了髒/ kludge。
有沒有一種乾淨/適當的方式來處理這個要求?
您實際上只是將用戶輸入視爲SQL。但是你可以解析(例如自定義屬性),在你的CustomOrder類中從頭開始驗證和構建SQL。在我看來,這是一個非常好的開始。 – 2011-05-10 13:39:09