'''
<summary>Application's main PersistenceManager. Initializes. See <see cref="MainPm.Manager"/>.</summary>
Public
NotInheritable Class MainPm
''' <summary>Do not allow new MainPm instances.</summary>
Private Sub New()
End Sub
''' <summary>Application's main PersistenceManager.</summary>
Public Shared ReadOnly Property Manager() As PersistenceManager
Get
If msManager Is Nothing Then
Initialize()
End If
Return msManager
End Get
End Property
Private Shared Sub Initialize()
msManager = PersistenceManager.DefaultManager
Model.Common.EntityTypeInfo.DefaultPersistenceManager = msManager
EntityAdapter.DefaultPersistenceManager = msManager
UpdateAuditColumnsOnChange()
End Sub
''' <summary>Update entity audit columns everytime the entity changes.</summary>
Private Shared Sub UpdateAuditColumnsOnChange()
msAuditColumnManagers = New AuditColumnManagerCollection(msManager)
End Sub
#Region "IsClientProcess"
''' <summary>Get or set if executing on the client.</summary>
Public Shared Property IsClientProcess() As Boolean
' No threading worry because only set once and always in the same direction.
Get
If msIsClientProcess.HasValue Then
Return msIsClientProcess.Value
End If
IsClientProcess = False ' assume is server process until know otherwise.
Return msIsClientProcess.Value
End Get
Set(ByVal value As Boolean)
If msIsClientProcess.HasValue Then
Throw New InvalidOperationException("'IsClientProcess' is already set; can only set it once.")
Else
msIsClientProcess = Value
' Tell DataSourceKeyResolver about it.
'AppHelper.DataSourceKeyResolver.IsClientProcess = msIsClientProcess.Value
End If
End Set
End Property
#End Region
#Region "Private Field Members"
Private Shared msManager As PersistenceManager
Private Shared msIsClientProcess As Nullable(Of Boolean)
Private Shared msAuditColumnManagers As AuditColumnManagerCollection
#End Region
End Class