我正在开发一个使用 3 层架构的项目。我想知道如何将数据读取器值从 DAL 传递到表示层
我的代码是这样的。在 DAL 层
public class HomeDAL
{
public SqlDataReader DefaultSearchFriends(long userid)
{
SqlConnection SocialConn = new SqlConnection(connstr);
using (SqlCommand comm = new SqlCommand("proc_FriendsSearch", SocialConn))
{
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.AddWithValue("@userid", userid);
SocialConn.Open();
SqlDataReader dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
return dr;
}
}
}
在 BAL 层
public class HomeBAL
{
public SqlDataReader DefaultSearchFriends(long userid)
{
HomeDAL HDAL = new HomeDAL();
SqlDataReader dr = HDAL.DefaultSearchFriends(userid);
return dr;
}
}
在演示层上,我在页面加载时写了这个
HomeBAL HBAL = new HomeBAL();
SqlDataReader dr = HBAL.DefaultSearchFriends(user_id);
while (dr.Read())
{
//some code
}
现在我想知道两件事
1-这是以这种方式调用数据读取器的权利还是有一些更好的逻辑。
2-如何在 BAL 层和 DAL 层关闭数据读取器对象。