我们有一个高度专业化的DAL,它位于我们的数据库之上。我们的应用程序需要使用此DAL才能正确操作此数据库。如何构建WebService暴露的DAL?
生成的DAL(位于某些自定义基类)具有各种'Rec'类(Table1Rec,Table2Rec),每个类表示给定表的记录结构。
这里是一个示例伪类...
Public Class SomeTableRec
Private mField1 As String
Private mField1isNull As Boolean
Private mField2 As Integer
Private mField2isNull As Boolean
Public Sub New()
mField1isNull = True
mField2isNull = True
End Sub
Public Property Field1() As String
Get
Return mField1
End Get
Set(ByVal value As String)
mField1 = value
mField1isNull = False
End Set
End Property
Public ReadOnly Property Field1isNull() As Boolean
Get
Return mField1isNull
End Get
End Property
Public Property Field2() As Integer
Get
Return mField2
End Get
Set(ByVal value As Integer)
mField2 = value
mField2isNull = False
End Set
End Property
Public ReadOnly Property Field2isNull() As Boolean
Get
Return mField2isNull
End Get
End Property
End Class
每个类都有属性每个字段的...... 因此我可以写...
Dim Rec as New Table1Rec
Table1Rec.Field1 = "SomeString"
Table2Rec.Field2 = 500
凡字段可以接受NULL值,还有一个额外的属性,用于指示该值当前是否为空。
因此....
Dim Rec as New Table1Rec
Table1Rec.Field1 = "SomeString"
If Table1Rec.Field1Null then
' This clearly is not true
End If
If Table1Rec.Field2Null then
' This will be true
End If
这工作,因为在类的构造函数将所有NULLproperties为True任何FieldProperty的设置将导致相当于NullProperty被设置为false。
我最近有需要通过网络服务(我当然打算保护它)在Web上公开我的DAL,并发现虽然'Rec'类的结构在网络上保持不变。 。所有的逻辑都丢失了。
如果有人远程运行上一段代码,他们会注意到这两个条件都不会被证明是真的,因为没有客户端代码将null设置为true。
我觉得我已经把这个设计完全搞错了,但是看不到我应该改进它。
什么是建筑师的正确方法?