出现了 and,between,like这样的sql关键字,这样是不是违背了分层原则,
这种情况该怎么写好呢?
10 个解决方案
#1
这种情况可以使用一个专门的类来组织SQL语句
#2
是的,最好移到sqlserver层
#3
不对,数据访问层
#4
是的
不过也不用太过于苛求
有的时候太苛求没有必要
适合项目的才是最好的
不过也不用太过于苛求
有的时候太苛求没有必要
适合项目的才是最好的
#5
数据访问层是专门向数据库交互的类,应该保证其可移植性,如果写进数据访问层的话,那就不灵活了
#6
也并不算违背。只是不建议。就像linq本身就封装的不错,但他同时也保留了直接使用sql语句的查询
gridview,treeview一类的控件更是如此,他提供了一些常规的相对不变的一些东西,但是如果你要变化他们,他也同时提供给你变化的机会。
对于n层来说,你可以保留这个,但是不建议调用代码的程序员这么做,除非他实在是特殊需要(net本身也是这么处理的,他保留指针,但通常不用指针,除非你有特别的要求需要你才会声明unsafe去使用他们)
gridview,treeview一类的控件更是如此,他提供了一些常规的相对不变的一些东西,但是如果你要变化他们,他也同时提供给你变化的机会。
对于n层来说,你可以保留这个,但是不建议调用代码的程序员这么做,除非他实在是特殊需要(net本身也是这么处理的,他保留指针,但通常不用指针,除非你有特别的要求需要你才会声明unsafe去使用他们)
#7
最好不要在表示层见到数据库的东西
#8
任何一套成熟的架构,必然会有一个SQL语句装配器类似的东西.一来是可以适应数据库迁移,二来也会进行一些加密处理,进而防止sql注入.所以,不论是从可移植性的角度还是安全性的角度,直接拼sql都是不可取的,而与你说的"分层"关系却不大
#9
比较赞同8楼的观点,分层的架构各层之间如何传递数据似乎是个值得讨论的问题。
#10
其实应该将问题的重点倒过来看,既然你具体地发现那些“语法”限制了你使用后台数据系统,“管它什么三层不三层的学究气”呢?你就可以慢慢找出这个具体问题的解决之道。具体问题才可以揭穿许多东西,你自己就可以回答“如果三层是那个样子的那么我没有必要抄袭它”。在研究过ORM(过去)或者LINQ(现在)之后,相信许多人对三层的解释和实现更为实际。
#1
这种情况可以使用一个专门的类来组织SQL语句
#2
是的,最好移到sqlserver层
#3
不对,数据访问层
#4
是的
不过也不用太过于苛求
有的时候太苛求没有必要
适合项目的才是最好的
不过也不用太过于苛求
有的时候太苛求没有必要
适合项目的才是最好的
#5
数据访问层是专门向数据库交互的类,应该保证其可移植性,如果写进数据访问层的话,那就不灵活了
#6
也并不算违背。只是不建议。就像linq本身就封装的不错,但他同时也保留了直接使用sql语句的查询
gridview,treeview一类的控件更是如此,他提供了一些常规的相对不变的一些东西,但是如果你要变化他们,他也同时提供给你变化的机会。
对于n层来说,你可以保留这个,但是不建议调用代码的程序员这么做,除非他实在是特殊需要(net本身也是这么处理的,他保留指针,但通常不用指针,除非你有特别的要求需要你才会声明unsafe去使用他们)
gridview,treeview一类的控件更是如此,他提供了一些常规的相对不变的一些东西,但是如果你要变化他们,他也同时提供给你变化的机会。
对于n层来说,你可以保留这个,但是不建议调用代码的程序员这么做,除非他实在是特殊需要(net本身也是这么处理的,他保留指针,但通常不用指针,除非你有特别的要求需要你才会声明unsafe去使用他们)
#7
最好不要在表示层见到数据库的东西
#8
任何一套成熟的架构,必然会有一个SQL语句装配器类似的东西.一来是可以适应数据库迁移,二来也会进行一些加密处理,进而防止sql注入.所以,不论是从可移植性的角度还是安全性的角度,直接拼sql都是不可取的,而与你说的"分层"关系却不大
#9
比较赞同8楼的观点,分层的架构各层之间如何传递数据似乎是个值得讨论的问题。
#10
其实应该将问题的重点倒过来看,既然你具体地发现那些“语法”限制了你使用后台数据系统,“管它什么三层不三层的学究气”呢?你就可以慢慢找出这个具体问题的解决之道。具体问题才可以揭穿许多东西,你自己就可以回答“如果三层是那个样子的那么我没有必要抄袭它”。在研究过ORM(过去)或者LINQ(现在)之后,相信许多人对三层的解释和实现更为实际。