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. }

C#里面BLL、Model、DAL、UI层的更多相关文章

  1. C#简单三层结构设计UI、BLL、DAL、Model实际项目应用例子

    C#简单三层结构设计UI.BLL.DAL .Model实际项目应用例子 在实际项目中,程序设计都有他的层次结构,比如MVC.MVP.普通的三层结构等等,不过现在用三层结构的相比可能少了,但是也有一些小 ...

  2. NHibernate框架与BLL+DAL+Model+Controller+UI 多层架构十分相似--『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)

    原文://http://blog.csdn.net/wb09100310/article/details/47271555 1. 概述 搭建了Spring.NET+NHibernate的一个数据查询系 ...

  3. 20140117-配置文件为什么放在UI层

    配置文件为什么放在UI层 (刚才写着代码突然忘了配置文件为什么要放在UI层了,只记得晓虎老师强调过.找了半天视频……) 现总结一下: 晓虎老师给出的理由,大体如下:比如一个web项目,分成三层,DAL ...

  4. 三层架构之UI层

    之前已经发表了BLL,DAL,MODEL,三个层的源码 继续UI层: 先简单实现用户的登录及注册 高级操作可按照上一篇文章进行源码完善 如图所示↑ UI层目录文件 Reg.aspx 进行注册操作  & ...

  5. mvc项目架构搭建之UI层的搭建

    项目架构搭建之UI层的搭建 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构各部分解析 5.项目创 ...

  6. Spring.NET在MVC中实现业务层和UI层解耦

    最近在项目中用到了Spring.NET,使用它来实现业务层和UI层解耦.使用过程中难免遇到问题,现把遇到的一些问题整理出来,留作笔记. 使用的开发工具是vs2017,.netframework 4.6 ...

  7. 使用View Model从表现层分离领域模型

    本文来自:http://www.cnblogs.com/shanyou/archive/2010/04/03/1703501.html Model-View-Controller(模型-视图-控制器, ...

  8. 业务接口+UI层的设计(基于Castle实现的Repository)

    业务接口+UI层的设计(基于Castle实现的Repository) Repository层设计的文章见:[http://www.cnblogs.com/yomho/p/3297042.html]   ...

  9. 【Yom框架】漫谈个人框架的设计之三:业务接口+UI层的设计(基于Castle实现的Repository)

    Repository层设计的文章见:[http://www.cnblogs.com/yomho/p/3297042.html]   一.概要设计 上面Reposity 应该为 Repository 特 ...

  10. 【DDD】领域驱动设计实践 —— UI层实现

    前面几篇blog主要介绍了DDD落地架构及业务建模战术,后续几篇blog会在此基础上,讲解具体的架构实现,通过完整代码demo的形式,更好地将DDD的落地方案呈现出来.本文是架构实现讲解的第一篇,主要 ...

随机推荐

  1. 测试用例excel模板

    Index Precondition Action Test Data Expect Result Excute Date Pass/Fail

  2. Linux下JDK应该安装在哪个位置

    在百度知道上看到的回答觉得不错:https://zhidao.baidu.com/question/1692690545668784588.html 如果你认为jdk是系统提供给你可选的程序,放在op ...

  3. kendo ui treeview 标题太长时的自动换行

    添加以下CSS即可: div.k-treeview{white-space: normal;}

  4. 20155235 2016-2017-2 《Java程序设计》第7周学习总结

    20155235 2016-2017-2 <Java程序设计>第7周学习总结 教材学习内容总结 第十二章 Lambda 认识Lambda语法 Lambda语法概览 Lambda表达式与函数 ...

  5. DevExpress VCL 13.1.2 发布

    DevExpress VCL 的2013 第一个公开版发布, 基本上就是一些维护,没有大的变化,也没有FM 的支持. What's New in DevExpress VCL 13.1.2   Rel ...

  6. 34.More-healthyful Menu Options for Kids 给孩子提供的更健康菜式选择

    34.More-healthyful Menu Options for Kids 给孩子提供的更健康菜式选择 ① French fries,washed down with a pint of sod ...

  7. Django-组件

    https://www.cnblogs.com/yuanchenqi/articles/8034442.html

  8. 字典树Java实现

    Trie树的原理 Trie树也称字典树,因为其效率很高,所以在在字符串查找.前缀匹配等中应用很广泛,其高效率是以空间为代价的. 利用串构建一个字典树,这个字典树保存了串的公共前缀信息,因此可以降低查询 ...

  9. n&&m and n||m 的区别

    今天写一道题老是WA最后才发现问题出在了这个地方, 题目说的是当输入的n和m 都为0的时候,结束输入. 于是乎,条件我就写成了while(n&&m),其实这句话的意思是:只有m和n都不 ...

  10. Django开发Web监控工具-pyDash

      今天发现了一个比较有意思的监控工具,是基于Django开发的,开发大牛已经开放了源代码,向大牛致敬,同时研究研究,目前感觉这个监控比较直观,可以针对个人服务器使用,同时涉及的环境比较简单,部署起来 ...