私は 3 層アーキテクチャを使用するプロジェクトに取り組んでいます。DAL からプレゼンテーション層に datareader 値を渡す方法について知りたい
私のコードはこのようなものです。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
}
今知りたいことは2つ
1-この方法でdatareaderを呼び出すのは正しいですか、それともより良いロジックがあります。
2-BALレイヤーとDALレイヤーでdatareaderオブジェクトを閉じる方法。