抛开ORM, LINQ等。N层架构各层职责分离,UI层和BLL层不能出现字段、表、SQL代码等相关的东西。 现在如果要实现像淘宝这种十分复杂灵活的查询及排序如何实现。希望能提供解决方案的代码示例。

解决方案 »

  1.   

    你看到的TAOBAO查询是不走DB的另外复杂而灵活的查询,可以通过在业务层和UI层构造"查询条件类"来搞定名字确实难得说,反正就是一个封装了"=><!="这些操作符,还有另外一些查询相关操作的类,ORM分析这个东西得到SQL,当然,你的ORM得支持这种方式才行
      

  2.   

    我自己尝试有做一个范型来传递实体做查询参数附带一个查询操作,但在分页的时候又遇到问题了.因为一般分页都是传(string tableName, string where, string order, int pageIndex, int pageSize)等的形式. 这样的话这个where不又是会出现sql拼接了.我是想完全用传参的方式. 不知道有什么较完美的解决方案吗? 
      

  3.   

    我想你没有使用asp.net2.0在多年以前就提供出来现成的数据源控件吧。如果你觉得asp.net的内置控件不如自己重新写一遍更高效,至少你应该研究借鉴一下它们。你的这个问题,其实随便google一下“asp.net selectparameters”就有答案了。对于许多没有去搞“分层”的人也已经很自然地有答案了。例如使用ObjectDatasource,借助设计时声明或者运行时动态改变的selectparameters设置,可以把查询条件、排序排序传递给底层,而ObjectDatasource根本就是一个与底层数据库实现无关的asp.net控件数据处理框架。
      

  4.   

    数据源控件不但与界面控件配合进行数据查询、更新、删除、分页(仅读取一页数据)等等功能,而且甚至还内置了自动进行数据Cache机制,并且所有这些高级功能都是与底层的实现方式无关的。使用它,你的许多手写代码都会删除,而且执行效率会有所提高。
      

  5.   

    刚接触程序的那会正是应为asp.net强大的控件,便捷的使用让我有了学习的兴趣,
    学习的过程中不断听到一种说法:控件会让你什么都不会哦,因而再也不敢使用这些东西了.
    看了sp1234的帖子.......受益匪浅.
      

  6.   

    对于查询不出现在UI,业务层中有字段,这个很正常,对于封装好的,都是创建一个查询类,然后在数据库实现的地方根据查询类,转换成Sql语句
      

  7.   

    淘宝这样网站使用的是垂直搜索引擎技术,像开源的luecne,使用的是索引文件,和数据库没关系.
      

  8.   

    做个标记
    排序可以不走db
    查询封装就不好说了
    ORM也是有字段表什么的只不过是用对象形式表现出来
      

  9.   

    排序不走db的话分页就不对了呀。感觉数据源控件也解决不了,数据源控件也只是调用业务逻辑层对应的方法, 数据源控件可以做的在UI层的cs文件里一样可以做。而且会更灵活。  当然自己继承一个定制的数据源控件也有它的优势,比如可以复用。