机房重构开始有一断时间了,这个过程对于我来说并不容易,由开始的三层登录实现,到后来的七层登录实现,很多人说只要这条线通了以后就容易多了,但是通过这个过程对于我来说并没有那么容易,这个过程总会出现这样那样的问题。
以注册为例,我的 数据库设计的是卡表和学生表分开的,当初为了敲出另外一条线,没有首先判断卡号是否存在,只是单纯的将信息插入了card表,没有插入student表,因为还不知道怎么同时插入两张表,也不知道怎么怎么要判断完卡号之后再去决定要不要将相关信息插入数据库。通过与同学们的交流和我的摸索,写出了如下代码,为了方便我在D层传了两个实体,实现同时插入Card表和Student表。代码如下:
第一步,封装实体,将注册表中的各个字段都写入实体中,方便以后各层的调用,这里代码比较简单就省略了。
第二步,创建接口方法
<span style="font-family:KaiTi_GB2312;font-size:18px;"> ''' <summary>
''' 创建注册的方法,为了方便在此两个参数
''' </summary>
''' <param name="card"></param>
''' <param name="student"></param>
''' <returns></returns>
''' <remarks>2015年4月10日11:21:38</remarks>
Function RegisterCard(ByVal card As Entity.EntityCard, ByVal student As Entity.EntityStudent) As Boolean</span>
第三步,创建抽象工厂+反射
<span style="font-family:KaiTi_GB2312;font-size:18px;">Imports IDAL
Imports System.Data
Imports System.Reflection
Imports System.Configuration
'Factory
Public Class FactoryDB
Private Shared ReadOnly AssemblyName As String = "DAL" '数据程序集名称
Dim strDB As String = System.Configuration.ConfigurationSettings.AppSettings("DB")
Dim strCard As String = System.Configuration.ConfigurationSettings.AppSettings("DB")
''' <summary>
''' 实例化一个DAL中的Card