大家都记得机房合作有几个要求:比如不允许使用存储过程、从DAL层返回的结果不能是DataTable类型的、要使用设计模式......今天就来讲一讲,List要怎么用。
List<T>类是泛型集合,关于它的概念我以后会具体讲解(坑+1)。
而之前在机房重构使用的DataTable类是ADO.NET技术中的概念,是一个临时保存数据的网格虚拟器(表示内存中数据的一个表),返回的是记录集;而List中的值都是实体中的类,而因为在编写D层时,实体中类名和数据库中的字段名都是对应的,因此我们是不知道,并且也不需要知道数据库的内部结构。这一点符合面向对象思想的封装概念。
实际操作:
1.首先在DAL层建立SQLHelper类。这个不需要多说,大家学过机房重构和牛腩之后自己也就懂里面的代码了
2.在DAL层使用代码:
//实例化操作类
SQLHelper SQLHelper = new SQLHelper();
//查看用户表
public List<userEntity> selectUserInfo(Entity.userEntity userEntity )
{
SqlParameter[] parmes = { new SqlParameter("@ID", userEntity.ID.Trim()) };
string sql = "SELECT * FROM [user] WHERE ID = @ID";
DataTable table = SQLHelper.ExecuteQuery(sql, parmes, CommandType.Text);
List<userEntity> list = new List<userEntity>();
foreach (DataRow row in table.Rows)
{
list.Add(new userEntity()
{
ID=row["ID"].ToString(),
passWord=row["passWord"].ToString(),
userName=row["userName"].ToString(),
type=row["type"].ToString(),
cash=Convert.ToInt32(row["cash"]),
isAllow=row["isAllow"].ToString(),
state=row["state"].ToString ()
});
}
return list ;
}
和之前机房重构的D层类似,只是在给table赋值之后加了一段对list泛型的实例化和增加集合,其中,集合中的元素都是实体层的类型,因此list.Add语法其实是对实体层的一个传值过程。
3.传到B层,这里需要注意,如果是需要在B层进行逻辑判断的,相应方法要从List类型写U层需要的类型,然后在方法内部对List类型转化;如果不需要进行逻辑判断而是传到U层进行进一步处理,方法就用List泛型类型即可!
从List中获得D层查询的值语法:
list[0].属性名(属性名中的属性值是通过实体层存储的)
先简单的说这么多,若有不足,请大家指出!