三层结构

还是跟着老师的课件复习吧!

一:首先说为什么要用三层结构:

三层结构的优势:


什么是三层结构


三层之间的数据传递方向:



三层结构:
三层之间的关系
自上而下逐层调用
上层使用下层提供的功能
下层为上层提供服务,返回数据
不可跨层调用
不可逆向调用
二:搭建三层结构框架
搭建三层结构步骤

1、搭建表示层(创建一个ASP.NET Web应用程序)

2、搭建业务逻辑层(类库

3、搭建数据访问层(类库

4、添加各层之间的相互依赖



创建过程:
第一:新建空白解决方案:

第二:分别创建三层:
第一层:表示层MySchoolUI    添加windows窗体应用程序

第二层业务逻辑层MySchoolBll和第三次数据访问层MySchoolDal
都为新建类库:

最后添加三层的依赖关系:

自上而下逐层调用
上层使用下层提供的功能
下层为上层提供服务,返回数据
不可跨层调用
不可逆向调用
首先在表示层:引用上添加引用

再在业务逻辑层上添加:


三:
三层结构的学生管理系统
实体类
使用实体类封装数据
符合面向对象的思想
强类型
智能提示


实体类与数据库表的对应关系
    对应    实体类
表中字段    对应    实体类的属性

对应如下:
namespace MySchoolEntity
{
    public  class Student
    {
        public string Id;
        public string Name;
        public string Gender;
        public string Major;
        public int Grade;
        public int TheClass;
    }
}





因为三层结构中都要用到实体对象,所以实体类需要和这三层都建立依赖关系:
创建实体类:

分别和这三层建立依赖关系:即在三层中分别添加引用:

四:数据访问层
1数据访问层与数据库打交道,实现数据增删改查操作
一般至少包含以下方法 ( 方法命名供参考,下同)
添加 Insert
查询 SelectOne SelectMany
更新 Update
删除 Delete
2数据访问层类的命名规则,在实体类名后添加一个后缀,如 Dal 或者 Db 或者 Service
例:
StudentDal
StudentDb
StudentService
3
实现数据访问层 StudentDal 中各个方法
首先实现 Insert 方法


在数据访问层创建StudentDal.cs类
namespace MySchoolDAL
{
    public class StudentDal
    {
        public void insert(Student student)
        {
            string s = "server=.;database=SampleDb;Integrated Security=true;";
            SqlConnection conn = new SqlConnection(s);
            string sql = string.Format("insert into Student(Id,Name,Gender,Major,Grade,Class) values('{0}','{1}','{2}',{3},'{4}','{5}')",
                student.Id, student.Name, student.Gender, student.Grade, student.TheClass);
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText=sql;
            cmd.Connection = conn;
            conn.Open();
            cmd.ExecuteNonQuery();
            conn.Close();
        }

    }
}





五:单元测试简介:
测试 Insert 方法 -- 单元测试
单元测试对软件开发中最小可测试单元(类和方法)进行检查和验证。
是开发人员(而非测试人员)自己进行的测试。
是编码测试,而不是人运行程序进行测试
首先进入第三次数据访问层:
Studnetdal.cs中的insert方法上点击右键创建测试单元:

在写insert测试方法:
 public void insertTest()
        {
            StudentDal target = new StudentDal(); 
            Student student =new Student();
            student.Id ="Bzu01";
            student.Name="测试生成";
            student.Major="CS";
            student.Gender="M";
            student.Grade=2011;
            student.TheClass=2;
            target.insert(student);
            
        }
    }
}


点击测试:通过测试后 会在数据库中显示
我刚才测试啦一下,我的没有通过测试。还有点小问题,不过方法就是上面的方法。过程是一样的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值