У нас есть специализированный DAL, который находится над нашей БД. Наши приложения должны использовать этот DAL для правильной работы с этой БД.Как архитектор DAL для воздействия WebService?
Сгенерированный 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 Истины и настройка любого FieldProperty заставит эквивалент NullProperty быть установлены в ложь.
Мне недавно пришлось подвергать DAL через Интернет через веб-сервис (который я, конечно же, намерен обеспечить), и обнаружил, что, хотя структура класса «Rec» остается неповрежденной в Интернете. . Вся логика потеряна.
Если кто-то отдал предыдущий фрагмент кода удаленно, они заметили бы, что ни одно из условий не будет истинным, так как не существует кода на стороне клиента, который устанавливает null в true.
У меня такое чувство, что я все это неправильно задумал, но не могу понять, как я должен его улучшить.
Каков правильный способ его создания?