用存储过程分页,条件用的是@where,在界面上时,出现了  " and 字段名=",
出现了 and,between,like这样的sql关键字,这样是不是违背了分层原则,这种情况该怎么写好呢?

解决方案 »

  1.   

    这种情况可以使用一个专门的类来组织SQL语句
      

  2.   

    也并不算违背。只是不建议。就像linq本身就封装的不错,但他同时也保留了直接使用sql语句的查询gridview,treeview一类的控件更是如此,他提供了一些常规的相对不变的一些东西,但是如果你要变化他们,他也同时提供给你变化的机会。对于n层来说,你可以保留这个,但是不建议调用代码的程序员这么做,除非他实在是特殊需要(net本身也是这么处理的,他保留指针,但通常不用指针,除非你有特别的要求需要你才会声明unsafe去使用他们)
      

  3.   

    任何一套成熟的架构,必然会有一个SQL语句装配器类似的东西.一来是可以适应数据库迁移,二来也会进行一些加密处理,进而防止sql注入.所以,不论是从可移植性的角度还是安全性的角度,直接拼sql都是不可取的,而与你说的"分层"关系却不大
      

  4.   

    其实应该将问题的重点倒过来看,既然你具体地发现那些“语法”限制了你使用后台数据系统,“管它什么三层不三层的学究气”呢?你就可以慢慢找出这个具体问题的解决之道。具体问题才可以揭穿许多东西,你自己就可以回答“如果三层是那个样子的那么我没有必要抄袭它”。在研究过ORM(过去)或者LINQ(现在)之后,相信许多人对三层的解释和实现更为实际。