有段时间没写博客了,今天想写点东西,决定跟大家分享一下如何利用EasyUI和ASP.NET构建一个基本的应用程序,实现数据库的增删改查等基本操作。首先需要声明,本系列博客只是搭建一个基本的三层架构,即Model、DAL、BLL和UI,不会涉及到设计模式中的抽象工厂模式之类的东西,主要是为了方便大家理解,在真正做项目的时候,还是希望大家能够事先定义好工厂、接口之列的东西,以此来降低系统的耦合性。
三层架构大家应该不陌生,还不了解的同志也可以自行百度。基本的三层架构由四个类库构成,即Model(Entity)层、DAL层、BLL层、UI层。如下如所示:
Model层是对数据库中数据表的一对一映射,它的作用在我看来只有一个,那就是被当做一种数据类型进行参数传递。举个例子,我想定义一个添加学生信息的函数,如果还是用基本数据类型数据作为参数的话,那么函数就得这样写:
public int AddStudentInfo(string id, string name, string gender, int? age, DateTime? birthday, string phoneNumber, string contactAddress)
{
//TODO:具体代码
}
这个函数参数太多,既不便于理解,也不利于扩展,因此我们可以考虑建立一个实体类,把这个实体类当做参数进行参数传递,实体类代码如下所示:
public class StudentModel
{
/// <summary>
/// 学号
/// </summary>
public string Id { get; set; }
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; }
/// <summary>
/// 性别
/// </summary>
public string Gender { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int? Age { get; set; }
/// <summary>
/// 生日
/// </summary>
public DateTime? Birthday { get; set; }
/// <summary>
/// 电话号码
/// </summary>
public string PhoneNumber { get; set; }
/// <summary>
/// 联系地址
/// </summary>
public string ContactAddress { get; set; }
}
相对应的添加学生信息的函数可以这么写:
public int AddStudentInfo(StudentModel model)
{
//TODO:具体代码
}
如果你的数据库中还有其他数据表的话,逐一建立相应的类与之对应就行了。本系列博客的测试数据用的是宗地、界址点、界址线的属性数据,后续的博客也会用到,其具体代码如下:
宗地类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EasyUIApp.Entity
{
public class CadastreEntity
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 标识码
/// </summary>
public int? BSM { get; set; }
/// <summary>
/// 要素代码
/// </summary>
public string YSDM { get; set; }
/// <summary>
/// 地块编码
/// </summary>
public string DKBM { get; set; }
/// <summary>
/// 地块类别
/// </summary>
public string DKLB { get; set; }
/// <summary>
/// 地块东至
/// </summary>
public string DKDZ { get; set; }
/// <summary>
/// 地块西至
/// </summary>
public string DKXZ { get; set; }
/// <summary>
/// 地块南至
/// </summary>
public string DKNZ { get; set; }
/// <summary>
/// 地块北至
/// </summary>
public string DKBZ { get; set; }
/// <summary>
/// 指界人姓名
/// </summary>
public string ZJRXM { get; set; }
}
}
界址点类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EasyUIApp.Entity
{
public class BoundaryPointEntity
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 标识码
/// </summary>
public int? BSM { get; set; }
/// <summary>
/// 要素代码
/// </summary>
public string YSDM { get; set; }
/// <summary>
/// 界址点号
/// </summary>
public string JZDH { get; set; }
/// <summary>
/// 界标类型
/// </summary>
public string JBLX { get; set; }
/// <summary>
/// 界址点类型
/// </summary>
public string JZDLX { get; set; }
/// <summary>
/// 地块编码
/// </summary>
public string DKBM { get; set; }
/// <summary>
/// X坐标值
/// </summary>
public float? XZBZ { get; set; }
/// <summary>
/// Y坐标值
/// </summary>
public float? YZBZ { get; set; }
}
}
界址线类:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EasyUIApp.Entity
{
public class BoundaryLineEntity
{
/// <summary>
/// 编号
/// </summary>
public int Id { get; set; }
/// <summary>
/// 地块编码
/// </summary>
public string DKBM { get; set; }
/// <summary>
/// 标识码
/// </summary>
public int? BSM { get; set; }
/// <summary>
/// 要素代码
/// </summary>
public string YSDM { get; set; }
/// <summary>
/// 界线性质
/// </summary>
public string JXXZ { get; set; }
/// <summary>
/// 界址线类别
/// </summary>
public string JZXLB { get; set; }
/// <summary>
/// 界址线位置
/// </summary>
public string JZXWZ { get; set; }
/// <summary>
/// 界址线号
/// </summary>
public string JZXH { get; set; }
/// <summary>
/// 起界址点号
/// </summary>
public string QJZDH { get; set; }
/// <summary>
/// 终界址点号
/// </summary>
public string ZJZDH { get; set; }
/// <summary>
/// 界址线说明
/// </summary>
public string JZXSM { get; set; }
/// <summary>
/// 毗邻地物权利人
/// </summary>
public string PLDWQLR { get; set; }
/// <summary>
/// 毗邻地物指界人
/// </summary>
public string PLDWZJR { get; set; }
}
}
到此为止实体层建立完毕,下一篇博客将会讲解数据访问层的构建。