C#里面BLL、Model、DAL、UI层

Stella981
• 阅读 800

C# 三层架构分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)再加上实体类库(Model)

1、实体类库(Model),主要存放数据库中的表字段。

操作:

(1)先建立实体类库Model,打开项目,在解决方案中右键--》添加--》新建项目--》选中类库--》改名Model--》确定

(2)选中Model类库--》Shift+ALT+C--》建立实体类。UserInfo类

  1. namespace Model
  2. {
  3. public  class UserInfo
  4. {
  5. public string  UserName { get; set; }
  6. public string  Password { get; set; }
  7. }
  8. }

2、数据访问层(DAL),主要是存放对数据类的访问,即对数据库的添加、删除、修改、更新等基本操作

操作:

(1)先建立数据访问层类库DAL,打开项目,在解决方案中右键--》添加--》新建项目--》选中类库--》改名DAL--》确定

(2)在DAL中添加对Model的引用,选中DAL--》Alt+P+R--》解决方案--》项目--》选中MOdel--》确定

(3)在DAL中添加对system.configuration的引用,选中DAL--》Alt+P+R--》程序集--》框架--》选中System.configuration--》确定

(4)建立数据访问类,选中DAL--》Shift+ALT+C--》建立数据访问类。UserDB类

  1. using System.Configuration;

  2. using Model;

  3. using System.Data;

  4. using System.Data.SqlClient;

  5. namespace DAL

  6. {

  7. class UserDB

  8. {

  9. private string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();

  10. public int AddUser(UserInfo userInfo)

  11. {

  12. //对数据库进添加一个用户操作

  13. string commandText = "insert into UserInfo (userName,Password)values(@userName,@Password)";

  14. SqlParameter[] paras = new SqlParameter[]

  15. {

  16. new SqlParameter ("@userName",userInfo.UserName ),

  17. new SqlParameter ("@Password",userInfo.Password )

  18. };

  19. return SqlHelper.ExecuteNonQuery(connString, CommandType.Text, commandText, paras);

  20. }

  21. }

  22. }

3、业务逻辑层(BLL)对传送数据进行逻辑判断分折,并进行传送正确的值。

(1)先建立业务逻辑层类库BLL,打开项目,在解决方案中右键--》添加--》新建项目--》选中类库--》改名BLL--》确定

(2)在BLL中添加对Model、DAL的引用,选中BLL--》Alt+P+R--》解决方案--》项目--》选中MOdel、DAL--》确定

(3)建立业务逻辑类,选中BLL--》Shift+ALT+C--》建立业务逻辑类。LoginManager类

  1. using DAL;

  2. using Model;

  3. namespace BLL

  4. {

  5. public class LoginManager

  6. {

  7. private UserDB userDB = new UserDB();

  8. public bool Add(UserInfo userInfo, out string messageStr)

  9. {

  10. messageStr = "";//返回界面层添加用户返回信息

  11. bool isSuccess = false;

  12. if (userInfo.UserName.Trim().Length != 0)//判断从传递来的username是否为空

  13. {

  14. if (userDB.IsEquals(userInfo))//传给DALl操作判断数据库中是否有重复值

  15. {

  16. userDB.AddUser(userInfo);//传给DAL操作增加一个新用户

  17. isSuccess = true;

  18. }

  19. else

  20. messageStr = "有相同的值";

  21. }

  22. else

  23. {

  24. messageStr = "不能为空";

  25. }

  26. return isSuccess;//返回界面层是否添加成功

  27. }

  28. }

  29. }

5、表现层(UI)即用户界面层

(1)在UI中添加对Model、BLL的引用,选中UI--》Alt+P+R--》解决方案--》项目--》选中MOdel、BLL--》确定

(2)编写代码传递数据给BLL层。

  1. UserInfo userInfo;

  2. LoginManager lm = new LoginManager();

  3. private void btnAdd_Click(object sender, EventArgs e)

  4. {

  5. userInfo = new UserInfo()

  6. {

  7. UserName = txtUserName.Text.Trim(),

  8. Password = txtPassword.Text.Trim()

  9. };

  10. string messageStr = "";

  11. if (lm.Add(userInfo, out  messageStr))

  12. {

  13. MessageBox.Show("添加成功");

  14. }

  15. else

  16. {

  17. MessageBox.Show(messageStr);

  18. txtUserName.Focus();

  19. }

  20. }

  21. }

点赞
收藏
评论区
推荐文章
劳伦斯 劳伦斯
3年前
前端面试题自检 Vue 网络 浏览器 性能优化部分
框架VueMVVM是什么?ModelViewViewModel,Model表示数据模型层。view表示视图层,ViewModel是View和Model层的桥梁,数据绑定到viewModel层并自动渲染到页面中,视图变化通知viewModel层更新数据。Vue的生命周期
Wesley13 Wesley13
3年前
java 日志的数据脱敏
思路1。在model层进行处理,直接重写get方法,在写一个getPlain获取明文方法。(缺点:数据库写入和json序列化传递时使用的都是密文)  2.利用日志组件过滤特定的key,去进行脱敏(缺点:对所有的日志输出全部要正则匹配,非常耗时。)由1,2的利弊,肯定会选择1,然后考虑一种实现(在model层定义方法,获取它的一个复制类,复制
Wesley13 Wesley13
3年前
Go微服务实践之增删改查
从此篇文章开始,我们来陆续介绍gozero开发一个项目所需要的组件和开发实践。首先我们从model层开始,来说说gozero的API以及封装细节。首先model层连接的API集中在core/stores。我们先来看看操作mysql这类数据库,API方法我们来到core/stores/sqlx,所以接
Stella981 Stella981
3年前
Python之路【第十七篇】:Django【进阶篇 】(转自银角大王博客)
Model到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞:创建数据库,设计表结构和字段使用MySQLdb来连接数据库,并编写数据访问层代码业务逻辑层去调用数据访问层执行数据库操作!(https://oscimg.oschina.net/oscnet/2f863fee384e3d877
可莉 可莉
3年前
2020,最新Model的设计
很多的app使用MVC设计模式来将“用户交互”与“数据和逻辑”分开,而model其中一个重要作用就是持久化。下文中设计的Model可能不是一个完美的,扩展性强的model范例,但在我需要重构的app中,这样的设计能够满足我的需要。关于ModelModel层包含了app的数据与逻辑,Model层中的类需要关心的是数据的表现,存储,以及操
Stella981 Stella981
3年前
2020,最新Model的设计
很多的app使用MVC设计模式来将“用户交互”与“数据和逻辑”分开,而model其中一个重要作用就是持久化。下文中设计的Model可能不是一个完美的,扩展性强的model范例,但在我需要重构的app中,这样的设计能够满足我的需要。关于ModelModel层包含了app的数据与逻辑,Model层中的类需要关心的是数据的表现,存储,以及操
Wesley13 Wesley13
3年前
Qt mvc学习一
 mvc是经典的三层结构,将数据,视图和逻辑分离。Qt中的Model/View框架,实现了这个模式。在Qt中这个模式设计到三个类,model类,view类和delegate类。model类保存数据,view复制显示,而delegate负责协调model和view之间的数据edit(编辑)和render(渲染)。这些在model子类中需要实现的方法可以分为
Stella981 Stella981
3年前
Hibernate反射DAO模式
在持久层框架中,如果我们要像简单的JDBC连接数据库那样写一个通用的Dao方法的话,那么把JDBC简单的业务逻辑搬到hibernate持久层框架中,当然是不可能的,这里主要的问题就在于hibernate持久层框架中,因为它不是像JDBC那样简单的增删改查的编写,而是要针对实体类映射配置文件来对照数据库表字段进行操作,而且操作是面向对象的查询,不是简单的sql
Stella981 Stella981
3年前
31、最简单的mvc框架tiny,增加Ioc,jdbc工具类(1个类),连接池(1个类)
Ioc按照mvc,我们需要把tiny分成3层,其中视图(Renderer抽象类)和Action我们已经在前面实现了,这次我们用最少的代码实现Model。    model沿用Action的想法,用户自定义类,类名必须以Model结尾,同Action一样在初始化时放入Container容器内。model就是数据模型,我们这里充血模型,model
Stella981 Stella981
3年前
NetBeans数据库笔记
1.创建数据库,数据表用MySQL数据库和NavicatforMySQL工具创建表2.创建实体类——反应表结构(列——变量)           也就是对应表建立的gets和sets方法,实体类的名字一般都与数据库表的名字相同3.创建数据访问层。1.BaseDAO(父类)代码:importjava.sql.Connect