cha*_*har 6 c# asp.net n-tier-architecture
我是3层架构的新手,下面是我的DAL代码
public static int Insert(string firstname, string lastname, DateTime dob, string gender,string email, string password)
{
// bool flag = false;
SqlParameter pid;
SqlParameter result;
SqlConnection con = Generic.DBConnection.OpenConnection();
try
{
SqlCommand cmd1 = new SqlCommand("Insertreg", con);
cmd1.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.AddWithValue("@FirstName", firstname);
cmd1.Parameters.AddWithValue("@LastName", lastname);
cmd1.Parameters.AddWithValue("@Dob", dob);
cmd1.Parameters.AddWithValue("@Gender", gender);
cmd1.Parameters.AddWithValue("@EmailId", email);
cmd1.Parameters.AddWithValue("@Password", password);
result = cmd1.Parameters.Add("@result", System.Data.SqlDbType.Int);
result.Direction = System.Data.ParameterDirection.Output;
pid = cmd1.Parameters.Add("@id", System.Data.SqlDbType.Int);
pid.Direction = System.Data.ParameterDirection.Output;
return cmd1.ExecuteNonQuery();
con.Close();
}
catch (Exception ex)
{
throw ex;
}
}
Run Code Online (Sandbox Code Playgroud)
在BAL中
public int insert(string firstname,string lastname,DateTime dob,string gender,string email,string password)
{
ProfileMasterDAL dal=new ProfileMasterDAL();
try
{
return ProfileMasterDAL.Insert(firstname, lastname, dob, gender,email, password);
}
catch (Exception ex)
{
throw ex;
}
finally
{
dal = null;
}
}
Run Code Online (Sandbox Code Playgroud)
我的UI
ProfileMasterBLL pmBLL = new ProfileMasterBLL();
pmBLL.insert(firstname, lastname, dob, gender, mobile, country, state, email, password);
Run Code Online (Sandbox Code Playgroud)
这是在3层中编码的正确方法吗?我的意思是如何将方法从DAL调用到BAL并进入UI?如果没有建议我一些好方法.谢谢.
通常我会做以下事情:
参考文献如下:
对你来说最大的问题是,当BL不知道DAL时,BL如何检索/保存/删除数据,因此无法在DAL中创建类的实例.好吧,这是一个小依赖注入派上用场的地方.您需要接线的是将DAL类注入BL接口.
希望这是有道理的.我将它用作我的标准3层实现,它绝对没有问题.具体来说,我使用实体框架与POCO实体,我使用的DI是一个自定义的,但任何一个将在那里.
BL不知道DAL.
我希望这更有意义.
归档时间: |
|
查看次数: |
8513 次 |
最近记录: |