root.vb

来自「C# 版本的一个三层商业架构」· VB 代码 · 共 147 行

VB
147
字号
<Serializable()> _
Public Class Root
  Inherits BusinessBase

  Private mData As String = ""

  Private mChildren As Children = Children.NewChildren

  Public Property Data() As String
    Get
      Return mData
    End Get
    Set(ByVal Value As String)
      If mData <> Value Then
        mData = Value
        MarkDirty()
      End If
    End Set
  End Property

  Public ReadOnly Property Children() As Children
    Get
      Return mChildren
    End Get
  End Property

  Public Overrides ReadOnly Property IsDirty() As Boolean
    Get
      Return MyBase.IsDirty OrElse mChildren.IsDirty
    End Get
  End Property

  Public Overloads Overrides Function Equals(ByVal obj As Object) As Boolean

    If obj Is Nothing OrElse Not TypeOf obj Is Root Then
      Return False
    End If

    Return Data = CType(obj, Root).Data

  End Function

  <Serializable()> _
  Private Class Criteria
    Public Data As String

    Public Sub New()
      Data = "<new>"
    End Sub

    Public Sub New(ByVal Data As String)
      Me.Data = Data
    End Sub
  End Class

  Public Shared Function NewRoot() As Root
    Dim crit As Criteria = New Criteria
    Dim result As Object = DataPortal.Create(crit)
    Return DirectCast(result, Root)
  End Function

  Public Shared Function GetRoot(ByVal Data As String) As Root
    Return DirectCast(DataPortal.Fetch(New Criteria(Data)), Root)
  End Function

  Public Shared Sub DeleteRoot(ByVal Data As String)
    DataPortal.Delete(New Criteria(Data))
  End Sub


  Private Sub New()
    ' prevent direct creation
  End Sub

  Protected Overrides Sub DataPortal_Create(ByVal Criteria As Object)
    Dim crit As Criteria = DirectCast(Criteria, Criteria)
    mData = crit.Data
    Session.Add("Root", "Created")
  End Sub

  Protected Overrides Sub DataPortal_Fetch(ByVal Criteria As Object)
    Dim crit As Criteria = DirectCast(Criteria, Criteria)
    mData = crit.Data
    MarkOld()
    Session.Add("Root", "Fetched")
  End Sub

  Protected Overrides Sub DataPortal_Update()

    Session.Add("clientcontext", ApplicationContext.ClientContext.Item("clientcontext"))

    Session.Add("globalcontext", ApplicationContext.GlobalContext.Item("globalcontext"))
    ApplicationContext.GlobalContext.Remove("globalcontext")
    ApplicationContext.GlobalContext.Item("globalcontext") = "new global value"

    If IsDeleted Then
      ' we would delete here
      Session.Add("Root", "Deleted")
      MarkNew()
    Else
      If IsNew Then
        ' we would insert here
        Session.Add("Root", "Inserted")

      Else
        ' we would update here
        Session.Add("Root", "Updated")
      End If
      mChildren.Update(Nothing)
      MarkOld()
    End If
  End Sub

  Protected Overrides Sub DataPortal_Delete(ByVal Criteria As Object)
    ' we would delete here
    Session.Add("Root", "Deleted")
  End Sub

  Protected Overrides Sub Deserialized()
    MyBase.Deserialized()
    Session.Add("Deserialized", "root Deserialized")
  End Sub

  Protected Overrides Sub Serialized()
    MyBase.Serialized()
    Session.Add("Serialized", "root Serialized")
  End Sub

  Protected Overrides Sub Serializing()
    MyBase.Serializing()
    Session.Add("Serializing", "root Serializing")
  End Sub

  Protected Overrides Sub DataPortal_OnDataPortalInvoke(ByVal e As DataPortalEventArgs)

    Session("dpinvoke") = ApplicationContext.GlobalContext("global")

  End Sub

  Protected Overrides Sub DataPortal_OnDataPortalInvokeComplete(ByVal e As DataPortalEventArgs)

    Session("dpinvokecomplete") = ApplicationContext.GlobalContext("global")

  End Sub

End Class

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?