首页 新闻 搜索 专区 学院

N层架构 像淘宝这种十分复杂灵活的查询如何实现?

0
悬赏园豆:20 [已解决问题] 解决于 2008-12-28 10:42

抛开ORM, LINQ等。

N层架构各层职责分离,UI层和BLL层不能出现字段、表、SQL代码等相关的东西。

现在如果要实现像淘宝这种十分复杂灵活的查询及排序如何实现。

希望能提供解决方案的代码示例。

问题补充: 我自己尝试有做一个范型来传递实体做查询参数附带一个查询操作,但在分页的时候又遇到问题了.因为一般分页都是传(string tableName, string where, string order, int pageIndex, int pageSize)等的形式. 这样的话这个where不又是会出现sql拼接了.我是想完全用传参的方式. 不知道有什么较完美的解决方案吗?
ruson的主页 ruson | 初学一级 | 园豆:150
提问于:2008-12-15 17:04
< >
分享
最佳答案
0

没有必要刻意强调什么DAL、BLL之类的。

查询条件就那么几个的组合,商品类别、地点、关键词,排序有价格、时间、浏览次数等。如果你不想sql拼接,那么把这些组合的语句都写好,然后参数绑定。

Cheney Shue | 菜鸟二级 |园豆:454 | 2008-12-16 12:20
其他回答(9)
0

谁能提供给你?,不过看看petshop咋实现的~还有园子里“MySpace"架构介绍等相关的文章:http://www.cnblogs.com/liushouzhao/archive/2008/10/30/1322634.html你看看吧,希望对你有帮助。再有了做那么大的项目得有一个大的团队

Astar | 园豆:40805 (高人七级) | 2008-12-15 17:08
0

楼上的说得很对,petshop和MySpace的查询方式没问题的。

BlogEngine的Post的查询方式不知道是否满足你的要求,可以参考一下我的这篇文章:

http://www.cnblogs.com/Thriving-Country/archive/2008/11/07/1328233.html

其实我觉得更适合你的方法是下面这种方法:

List<xxxx> objetcs = xxxx.Fill(string condition1,string conditon2.....)给页面使用或者干脆直接

List<xxxx> objetcs = xxxx.Fill(string condition)参数可以是类似xxx=yyy AND eee=aaa这种.

GUO Xingwang | 园豆:3885 (老鸟四级) | 2008-12-15 17:20
0

再复杂的查询,条件也是有限的,将所有条件设计为一个类,通过传递此类的对象,在BLL层形成条件,在DAL中执行条件的查询 ,如果条件有添加或修改,只需要修改一个类的定义而不需要修改BLL和DAL层的方法签名

Gray Zhang | 园豆:17610 (专家六级) | 2008-12-15 17:37
0

不大明白楼主的意思。

你只是做查询参数用,传类不如传枚举或者结构,传结构不如传字典,哈希表。

拼sql有什么不好?分页用ado分。

一棵芹菜 | 园豆:161 (初学一级) | 2008-12-15 20:30
0

taobao的查询已经独立了吧,据说是改的lucene的

wingoo | 园豆:1513 (小虾三级) | 2008-12-15 21:15
0

路过,学习了....

Jared.Nie | 园豆:1940 (小虾三级) | 2008-12-15 23:17
0

定义实例体类,传参时传的是类的对像

mysun | 园豆:14 (初学一级) | 2008-12-16 08:15
0

参数定义用实体类,Dao使用IBatis.Net的dynamic where

张九五 | 园豆:210 (菜鸟二级) | 2008-12-16 10:40
0

人家查询肯定不是数据库查询出来的呀,肯定是用全文搜索呀,用空间换时间

jowo | 园豆:2834 (老鸟四级) | 2008-12-16 11:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册