基于C#实现的三层架构实例

 更新时间:2014年08月13日 12:03:47   投稿:shichen2014  
这篇文章主要介绍了基于C#实现的三层架构实例,非常实用,需要的朋友可以参考下

本文所述为基于C#实现的三层架构。对于三层的概念查相信大家并不陌生,这里举一个关于三层的简单实例,真正看一下它是如何具体实现的.

我们先来一起看看实体类-Model
实质:实体类就是在完成数据库与实体类对应的功能,一个类是一张表,一个属性是一个字段!

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

再来说明一下,这个实例应用了配置文件来访问数据库,当然我们在做的时候可以使用SqlHelper,也可以将连接数据库的这些代码直接放在D层

<add name="ConnectionString" connectionString="Data Source=localhost;Initial Catalog=tester;User ID=sa;Password=123456" providerName="System.Data.SqlClient" /> 
 

三层中的最底层-数据访问层(DAL)  这一层要引用实体类和对Configuration的引用
实质:就是对数据库中的内容的增,删,改,查

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using model; 
using System.Data; 
using System.Configuration; 
using System.Data.SqlClient; 
 
namespace DAL 
{ 
  public class UserDB 
  { 
    public bool User_add(model.User model) 
     { 
       string setting = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
       SqlConnection myconn=new SqlConnection(setting); 
       myconn.Open(); 
       SqlCommand cmd=new SqlCommand("insert into dbo.[user]([name]) values(@name)",myconn); 
       cmd.Parameters.AddWithValue("@name", model.name); 
       if (cmd.ExecuteNonQuery()>0) 
       { 
         return true; 
       } 
       else 
       { 
         return false; 
       } 
     } 
  } 
}

三层中的桥梁-业务逻辑层BLL  这一层需要引用实体类和数据访问层
实质:负责处理U层的问题(本例子主要是对数据层的操作)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using DAL; 
 
namespace BLL 
{   
     public class userBLL 
     { 
      DAL.UserDB db = new UserDB(); 
      public bool addUser(model.User model) 
       { 
        return db.User_add(model); 
       } 
     }   
}

三层中的顶层-表现层UI  这一层要引用实体类和业务逻辑层
实质:具体解决做什么的问题

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using BLL; 
using model; 
 
namespace 登陆 
{ 
  public partial class Form1 : Form 
  { 
    public Form1() 
    { 
      InitializeComponent(); 
    } 
 
    private void button1_Click(object sender, EventArgs e) 
    { 
      model.User thisUser = new User(); 
       thisUser.name = TB_username.Text.ToString(); 
       BLL.userBLL uB = new userBLL(); 
       if (uB.addUser (thisUser)) 
       { 
        MessageBox.Show ("true"); 
       } 
       else                           
       { 
         MessageBox.Show ("false"); 
       } 
     } 
    } 
  }

三层之间的关系如下图所示:

解释:

上述代码中DAL主要是对数据库中的内容的操作,在这里就是向数据库中添加用户。BLL则主要是调用DAL层的操作,返回DAL层添加用户的结果(true或者false)。这样也就是在客户端与数据库中加了一个中间层,使得两层的依赖性减小。UI层则主要完成响应用户的需求,去调用BLL层实现的adduser方法,DAL层就是实实在在做这件事情的操作。

相关文章

  • WPF利用WindowChrome实现自定义窗口

    WPF利用WindowChrome实现自定义窗口

    这篇文章主要为大家详细介绍了WPF如何利用WindowChrome实现自定义窗口,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下
    2023-02-02
  • C# 参考之访问关键字:base、this

    C# 参考之访问关键字:base、this

    由于静态成员函数存在于类一级,并且不是对象的一部分,因此没有 this 指针。在静态方法中引用 this 是错误的。 索引器允许类或结构的实例按照与数组相同的方式进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。
    2008-03-03
  • C# 使用Tcp/Udp协议的示例代码

    C# 使用Tcp/Udp协议的示例代码

    这篇文章主要介绍了C# 使用Tcp/Udp协议的示例,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-08-08
  • Unity3D制作序列帧动画的方法

    Unity3D制作序列帧动画的方法

    这篇文章主要为大家详细介绍了Unity3D制作序列帧动画的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • C#带你玩扫雷(附源码)

    C#带你玩扫雷(附源码)

    这篇文章主要介绍了C#带你玩扫雷(附源码),详细的介绍实现扫雷的方法,具体一定的参考价值,有兴趣的可以了解一下
    2017-10-10
  • Unity实现汽车前后轮倒车轨迹计算

    Unity实现汽车前后轮倒车轨迹计算

    这篇文章主要为大家详细介绍了Unity实现汽车前后轮倒车轨迹计算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • DevExpress设置饼状图的Lable位置实例

    DevExpress设置饼状图的Lable位置实例

    这篇文章主要介绍了DevExpress设置饼状图的Lable位置的方法,以实例形式详细讲述了设置饼状图的Lable位置具体实现过程,需要的朋友可以参考下
    2014-10-10
  • C#弹出对话框确定或者取消执行相应操作的实例代码

    C#弹出对话框确定或者取消执行相应操作的实例代码

    这篇文章主要介绍了C#弹出对话框确定或者取消执行相应操作的实例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 深入多线程之:内存栅栏与volatile关键字的使用分析

    深入多线程之:内存栅栏与volatile关键字的使用分析

    本篇文章对内存栅栏与volatile关键字的使用进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 将DataTable转换成List&lt;T&gt;实现思路及示例代码

    将DataTable转换成List&lt;T&gt;实现思路及示例代码

    首先,这是我写的一个通用转换类,完成此类操作。也是实现这个功能最核心的部分。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11

最新评论