三层架构中,DAL层是数据库访问层,DataTable,DataSet这些类只出现在DAL层中,如果BLL层和用户界面需要调用DataTable,DataSet的对象怎么办呢?方法是将DataTable,DataSet的表中的一行打包成一个实体,然后将实体添加到一个实体列表中,即可得到一个表。
例如:把数据行打包成Message数据实体
在DAL层中
/// <summary>
/// 把数据行打包成Message数据实体
/// </summary>
/// <param name="dataRow">一条记录</param>
/// <returns>Message实体</returns>
public static Message GetMessageFromDataRow(DataRow dataRow)
{
Message message = new Message();
message.UserName = dataRow["userName"].ToString();
message.MessageContent = dataRow["messageContent"].ToString();
message.Emotion = dataRow["emotion"].ToString();
message.Color = dataRow["color"].ToString();
message.MessageTime = dataRow["messageTime"].ToString();
message.Face = dataRow["face"].ToString();
return message;
}
获取所有数据行,使用泛型集合List
/// <summary>
/// 获得信息表中的数据
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public static List<Message> Selectmessage()
{
List<Message> messagelist = new List<Models.Message>();
string str = "select * from T_message order by messageTime desc";
SqlHelper helper = new SqlHelper();
DataTable dt = helper.ExecuteReturnDataTable(str, null, CommandType.Text);
if (dt.Rows.Count > 0)
{
foreach (DataRow row in dt.Rows)
{
messagelist.Add(GetMessageFromDataRow(row));
}
return messagelist;
}
return null;
}
}
messagelist就对应与dt
在BLL层中
/// <summary>
/// 获得信息表中的数据
/// </summary>
/// <returns></returns>
public static List<Message> Selectmessage()
{
return MessageDAL.Selectmessage();
}
在用户界面的cs文件中
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//messagelist就相当于一个数据表
List<Message> messagelist = MessageBLL.Selectmessage();
dl_iframe.DataSource = messagelist;
dl_iframe.DataBind();
}
}