.net三层之间的引用
2016-07-20 23:41
471 查看
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。2、业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。3、数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。 4、类库项目(Model):该层写实体类,针对数据库的表和列DAL数据层:public class TestDAL{ public DataSet GetAll(){ //sql查询方法,返回dataset}}BLL层:添加引用dal层public class TestBLL{ public DataSet GetAll(){ return new TestDAL().GetAll();}}
UI页面添加bll引用 Grid.datasource=new TestBLL().getAll().tables[0]; 三层之间的引用如下: Model 不引用任何项目 DAL 引用Model (以及解决错误时 引用的System.Configuration )BLL 引用Model 、DAL UI 引用Model 、BLL 是借我碰到的一些问题,给大家点帮助。1.在WEB中引用BLL,Model层新建Post.aspx
Post.aspx 代码如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Post.aspx.cs" Inherits="Post" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="tb_name" runat="server"></asp:TextBox>
<asp:Button ID="btn_post" runat="server" OnClick="btn_post_Click" Text="提交" />
</div>
</form>
</body>
</html>
Post.aspx.cs 先搁下等写好类库再写
2.在Model 实体类中新建一个user.cs的类 (如果你已经按照上面的图 将类都建好了 就只用看下面的代码就好了)
user.cs代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Model
{
public class user
{
public user() { }
private string _name;
public string Name
{
set { _name = value; }
get { return _name; }
}
}
}
3.在DAL新建userdb.cs,并引用Model层 (鼠标右键——添加引用——项目 选择所需的引用)
userdb.cs代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
System.Configuration using Model; namespace DAL { public class userdb {
public bool adduser(Model.user model)
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlconn"].ConnectionString);//此行@
con.Open();
using (SqlCommand cmd = new SqlCommand("INSERT INTO qzzm_user(Name) VALUES(@Name)", con))
{
cmd.Parameters.AddWithValue("@Name", model.Name);
if (cmd.ExecuteNonQuery() > 0)
return true;
else return false;
}
}
}
}
代码写好了还不行,因为到时候调试的时候可能会出现 “当前上下文中不存在名称“ConfigurationManager” ”(注释 所在行),
此时就要添加System.Configuration的引用,方法同上面的引用Model层类似,在DAL层下 右键——添加引用——.NET
然后找到对应的 System.Configuration 确定即可。
4.在BLL中新建userbll.cs并引用DAL,Model层
userbll.cs代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BLL
{
public class userbll
{
DAL.userdb db = new DAL.userdb();
public bool adduser(Model .user model)
{
return db.adduser(model);
}
}
}
7.开始写Post.aspx.cs
代码如下:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class Post : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void btn_post_Click(object sender, EventArgs e)
{
Model.user us = new Model.user();
us.Name = tb_name.Text;
BLL.userbll ub = new BLL.userbll();
ub.adduser(us );
}
}
5.在Web.config文件中添加 缺少的数据链接字符串
找到<connectionStrings /> 这一行,将其修改如下:
<connectionStrings>
<add name="sqlconn"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
6. 调试 执行
此时会提示 “无法直接启动带有……”的信息
此时我们只要找到 Post.aspx 右键——在浏览器中查看 即可 。 输入数据——提交 ,即可到所建的数据库中找到所输入的数据。
一个简单的三层架构例子 到此完成。
各层引用关系如下:
1) WEB引用 DAL,Model
2)BLL引用 DAL,Model
3)DAL引用Model
4)Model无引用
好了既然有一个简单的实例了,就让我们进一步的深入其中吧,加油~~!
相关文章推荐
- 如何在 Linux/Windows/MacOS 上使用 .NET 进行开发
- 如何在 Linux 中安装微软的 .NET Core SDK
- C#.NET获取拨号连接的宽带连接方法
- C#.Net ArrayList的使用方法
- PowerShell中使用.NET将程序集加入全局程序集缓存
- .net(c#)中的new关键字详细介绍
- 由vbs sort引发.NET Framework之间的关系说明
- C#难点逐个击破(6):C#数据类型与.net framework数据类型
- .NET中的async和await关键字使用及Task异步调用实例
- 基于.NET平台常用的框架和开源程序整理
- .Net中的json操作类用法分析
- .net实现序列化与反序列化实例解析
- .NET中的Timer类型用法详解
- Microsoft .Net Remoting系列教程之二:Marshal、Disconnect与生命周期以及跟踪服务
- 关于.net(C#)中的跨进程访问的问题
- .NET实现父窗体关闭而不影响子窗体的方法
- 基于.Net中的数字与日期格式化规则助记词的使用详解
- .NET微信公众号开发之公众号消息处理
- .Net下的签名与混淆图文分析
- .NET 扩展实现代码