首页 新闻 会员 周边

三层以及注入的一点疑惑

0
悬赏园豆:20 [已解决问题] 解决于 2012-09-22 21:53
DAL中有 public DataSet GetList(string strWhere)
BLL中也有 public DataSet GetList(string strWhere)

1、在很多地方需要调用GetList,传入的strWhere为防止注入需要进行过滤,但是过滤字符串又不是万能的。所以是否有必要写一个 public DataSet GetList(string strWhere,Sqlparameter [] parameters).

2、既然分层,DAL负责数据,strWhere这个参数很明显需要知道数据库结构,所以是不是应该把所有调用GetList方法写入DAL。

如果1有必要,2没必要。那在表示层的.cs文件里会需要Using System.Data.SqlClient. 引入命名空间过多会不会有效率问题?如果没有,Visual Studio中的“组织Using”有什么作用?
王者永乐的主页 王者永乐 | 初学一级 | 园豆:29
提问于:2012-09-04 17:29
< >
分享
最佳答案
0

BLL:public DataSet GetList(string id,...){

  GetList(new KeyValuePari<string,object>("id",id),...);

}

DAL:public DataSet GetList(params KeyValuePair<string,object>[] paras){

将paras转换成Sqlparameter 

....

}

收获园豆:20
向往-SONG | 老鸟四级 |园豆:4853 | 2012-09-04 17:51

谢谢。您的方法解决了Sqlparameter的问题,但是在写web层的.cs文件时还得对数据库的字段名称有了解。另外我一直很好奇Using对性能的影响,为什么会影响。

王者永乐 | 园豆:29 (初学一级) | 2012-09-04 18:02

@王者永乐: 

要不对数据库的字段名称有了解就封装成实体啊。

using,C#貌似没啥影响吧,不像C++ include需要把相应的文件全部编译进来。

向往-SONG | 园豆:4853 (老鸟四级) | 2012-09-04 18:18
其他回答(2)
0

using其实最终还是生成try{}finally{}异常捕获块,如果没有异常出现,基本没有任何的性能的影响,只不过在finally里面会调用dispose()方法去关闭资源  

ajie1166 | 园豆:249 (菜鸟二级) | 2012-09-05 23:28

我说的Using是命名空间的Using

Using System.Data.SqlClient.这样

引入命名空间过多会不会有效率问题?如果没有,Visual Studio中的“组织Using”有什么作用?

支持(0) 反对(0) 王者永乐 | 园豆:29 (初学一级) | 2012-09-06 09:09
0

最好是封装成IList<object>的对象。

forhells | 园豆:724 (小虾三级) | 2012-09-06 08:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册