博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET开发,从二层至三层,至面向对象 (3)
阅读量:6904 次
发布时间:2019-06-27

本文共 1849 字,大约阅读时间需要 6 分钟。

继续上一篇《》 。我们学会了怎样创建对象,把BizBase类从页面级分离,解耦合度。亲的更亲,疏的更疏。

上面使用的是Access数据,将达不到扩展与升级的要求。程序在发展的同时,有可能会转向SQL数据库,或是有些模块外包。在这情形出现,我们需要定制设计规范接口。接手此软开发的团队,所在逻辑处层中,实作这个接口即可。
下面Insus.NET尝试写一个接口,在程序中应用SQL Server的团队,不管是在逻辑层中写SQL语句的,还是在逻辑层传入参数引用存储过程的,均可实现统一的接口。

上面标记2的返回DbdataReader函数,是为了它能让Access数据库(System.Data.OleDb.OleDbDataReader)与SQL数据库(System.Data.SqlClient.SqlDataReader)均能实作。由于这两者均是继承DbDataReader类。
这样的话,以前写的Access数据库的逻辑类BizBase,实作这个接口,得修改一下,才符合接口的标准:
下面,Insus.NET实现一个逻辑类,是方便用用户在程序的中习惯写SQL语句的对象:

接下来,Insus.NET再实现一个逻辑处理类,也是程序与数据库互通的,不过它是配合SQL Server数据库的存储过程来的。当然使用存储过程,它自然有参数出现。准备之前,先写一个类Insus.NET.Parameter:

 

 现在就可以创建这个逻辑类了,它有实作接口IBiz:

上面有写两个public的property,将是用来给程序对象传入引用的哪一个存储过程,以及参数。如果所引用的存储过程没有参数,传入null即可。

private string _ProcedureName;        private List
_Parameters; public string ProcedureName { get { return _ProcedureName; } set { _ProcedureName = value; } } public List
Parameters { get { return _Parameters; } set { _Parameters = value; } }
View Code

还有一个私有方法,它是用来创建参数的。如果size传入为-1的话,系统将使用默认数据类型长度。

private SqlParameter CreateParameter(string parameterName, SqlDbType dbType, Int32 size, object value)        {            SqlParameter sqlParameter;            if (size > 0)                sqlParameter = new SqlParameter(parameterName, dbType, size);            else                sqlParameter = new SqlParameter(parameterName, dbType);            sqlParameter.Direction = ParameterDirection.Input;            sqlParameter.Value = value;            return sqlParameter;        }
View Code

BizBaseSqlSp这个类别中,每个方法或是函数,均有几行代码冗余:
解决冗余,可以把它抽取出来,写一个私有的方法:

重构好之后的BizBaseSQLSp类:

 

如果你不想多数据库集成,你完全抽取其中一个逻辑处理类,作为你的类库。特别是最后一个。不必再问下面这个类库的原代码了:
当然,它肯定在asp.net MVC也能用得到。

 

本篇演示源程序(Access DB; .NET Framework 4.0;):
注:文章太长了,写成续集,请关注......

 

转载地址:http://ikldl.baihongyu.com/

你可能感兴趣的文章
Xtrabackup系列之:二进制安装
查看>>
python变量的定义
查看>>
Python面向对象
查看>>
CentOS5 安装vsFtpd软件及配置
查看>>
设计师应该关注的科技发展方向(二)
查看>>
redis python监控
查看>>
Java web部署目录结构和web.xml作用
查看>>
Python中list的遍历
查看>>
Linux系统下常见性能分析工具的使用
查看>>
事件驱动模型
查看>>
多机调度问题-贪心算法
查看>>
我的友情链接
查看>>
强制弹出页面代码(以及自动最小化功能)
查看>>
VRRP单备份配置
查看>>
好程序员学习笔记:函数
查看>>
如何打造工业物联网帝国?
查看>>
超人学院Hadoop大数据资源分享
查看>>
我的友情链接
查看>>
图解自定义安装CentOS
查看>>
Xposed hook(android)
查看>>