使用VB.Net,C#.Net和SQL Server。
Windows应用程序
我想分离3层架构的代码(表示层,数据访问层, 业务逻辑层)。
代码。
的Form_Load
Dim cmd As New SqlCommand
Dim ada As New SqlDataAdapter
Dim ds As New DataSet
Con = New SqlConnection("Data Source='" & servername.Text & "';Initial Catalog='" & databasename.Text & "';Integrated Security=true")
Con.Open()
cmd = New SqlCommand("Select * from tb1", Con)
ada = New SqlDataAdapter(cmd)
ada.Fill(ds, "tb1")
datagrid2.DataSource = ds.Tables("tb1")
上面的代码正在运行,但我想通过使用3层架构来完成相同的过程。
如何根据3层架构分离我的代码。
需要VB.Net代码帮助
答案 0 :(得分:2)
您可以为除UI层之外的每个图层创建一个类库项目。然后,您必须将每个进程分解为此3层。例如,在数据访问层中访问每个数据并将每个逻辑放在逻辑层中。在UI中,您无法直接使用DAL。你应该只调用BLL中定义的方法。
注意:通过添加每层的dll作为UI项目的参考,将这些图层添加到UI。
<强> DAL 强>
public DataSet GetData(string serverName,string dataBaseName)
{
SqlCommand cmd;
SqlDataAdapter ada;
DataSet ds = new DataSet();
SqlConnection Con;
Con = New SqlConnection("Data Source='" & serverName & "';Initial Catalog='" & dataBaseName & "';Integrated Security=true");
Con.Open();
cmd = New SqlCommand("Select * from tb1", Con);
ada = New SqlDataAdapter(cmd);
ada.Fill(ds, "tb1");
return ds;
}
<强> BLL 强>
public DataSet GetData(string serverName,string dataBaseName)
{
DataSet ds = new DataSet();
ds = DoAction(new DAL().GetData(serverName, dataBaseName)); //do something on data
return ds;
}
<强> UI 强>
datagrid2.DataSource = new BLL().GetData(servername.Text,databasename.Text);
datagrid2.DataMember = "tb1";
datagrid2.DataBind();
答案 1 :(得分:-1)
以下代码应位于您的表示层
Datagrid2.DataSource = ds.Tables("tb1")
以下图层应位于数据访问层
上 Dim cmd As New SqlCommand
Dim ada As New SqlDataAdapter
Dim ds As New DataSet
Con = New SqlConnection("Data Source='" & servername.Text & "';Initial Catalog='" & databasename.Text & "';Integrated Security=true")
Con.Open()
以下代码应该在您的业务逻辑层
上cmd = New SqlCommand("Select * from tb1", Con)
ada = New SqlDataAdapter(cmd)
ada.Fill(ds, "tb1")
但我强烈建议使用类似的东西,使用像NHibernate或EntityFramework这样的ORM或至少来自LinkToSql