C#三层架构
三层架构分为:表现层(UI(User Interface))、业务逻辑层(BLL(Business Logic Layer))、数据访问层(DAL(Data Access Layer))再加上实体类库(Model) Model不属于三层架构
创建三层架构:
1.在解决方案中分别创建MySchool.DAL、MySchool.BLL、MySchool.UI、MySchool.Model的类库,并把类库中的class.cs文件删除
2.在MySchool.Model层创建实体类,Grade类
3.在MySchool.DAL层创建SQLHelper工具类连接SQLServer数据库
更改命名空间,换成在Myschool.DAL 在MySchool.UI层中的App.config中创建连接数据库的字符串
并在MySchool.DAL层中创建的GradeDAL,在创建的类中创建查询所有信息的方法,(引用=添加引用=引入MySchool.Model)
在MySchool.BLL层中创建GradeBLL类,在类中先new出MySchool.DAL层中的GradeDAL类,然后创建方法返回GradeDAL的方法 引用MySchool.DAL和MySchool.Model
在MySchool.UI层,创建窗体应用程序,在窗体中拖入一个DataGridView,在form.cs中,创建GradeBLL的实例,用GradeBLL对象点出查询所有信息的方法,绑定到DataGridView里面 引入MySchool.DAL、MySchool.BLL、MySchool.Model
三层架构创建完成
为什么工具类连接数据库在DAL层中,连接数据库的连接字符串在UI层中,两个层中,也能连接到数据库?
因为项目初始化时会在UI层中的debug文件创建出关于DAL层中的类文件
如果DataGridView中需要两张表(多张表)的数据怎么办?
1.创建实体类,比如Subject,grade表
2.查看DataGridView中的列那张表的数据多一些,比如DataGridView中有 年级ID、年级名称、科目ID、科目名称、时长
看出Subject中的数据比较多,所以创建一个扩展类SubjectExt,在SubjectExt实体类中创建Grade表中的属性,并且继承Subject实体类
3.在DAL层创建查询方法。两表联查
后面的方法与上面的方法一致