---
title: clsAppInfo
summary: API reference for clsAppInfo.
status: draft
owner: SAIF Doc Gen
last_reviewed: 2026-07-24
library: SAIF.Application.LogView
reference_type: package
---

# clsAppInfo

`clsAppInfo` is the single-row BOF business object for `App_Info`. It creates new info or audit rows, retrieves one row by sequence number, and exposes the loaded row data through public properties.

## Purpose
- Create and save one application info or audit row.
- Retrieve one application info row by `AppInfoSeqNum`.
- Expose the row state used by log-view callers.

## Context
- Namespace: `SAIF.Application.LogView`
- Assembly/package: `SAIF.Application.LogView`

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `AppInfoSeqNum` | `Public Property AppInfoSeqNum() As Integer` | Exposes the identity value for the current info row. |
| `AppName` | `Public Property AppName() As String` | Exposes the application name stored with the info row. |
| `CreateDate` | `Public Property CreateDate() As Date` | Exposes the create date stored with the info row. |
| `DataText` | `Public Property DataText() As String` | Exposes the supplemental data text stored with the row. |
| `Environment` | `Public Property Environment() As String` | Exposes the environment stored with the info row. |
| `MachineName` | `Public Property MachineName() As String` | Exposes the machine name stored with the info row. |
| `MessageText` | `Public Property MessageText() As String` | Exposes the message text stored with the row. |
| `PageName` | `Public Property PageName() As String` | Exposes the page name stored with the info row. |
| `PurgeDate` | `Public Property PurgeDate() As Date` | Exposes the purge date stored with the row. |
| `UserName` | `Public Property UserName() As String` | Exposes the user name stored with the info row. |
| `MyCriteria` | `Public ReadOnly Property MyCriteria() As Criteria` | Returns the attached `clsAppInfo.Criteria` instance. |
| `IsValid` | `Public Overrides ReadOnly Property IsValid() As Boolean` | Returns the BOF validity result for this object. |
| `IsSavable` | `Public Overrides ReadOnly Property IsSavable() As Boolean` | Returns the BOF savable-state result for this object. |
| `Equals` | `Public Overloads Shared Function Equals(ByVal objA As Object, ByVal objB As Object) As Boolean` | Compares two objects by delegating to the typed `Equals` overload when both are `clsAppInfo`. |
| `Equals` | `Public Overloads Overrides Function Equals(ByVal inObject As Object) As Boolean` | Compares this instance to another object when it is a `clsAppInfo`. |
| `Equals` | `Public Overloads Function Equals(ByVal inObject As clsAppInfo) As Boolean` | Compares two `clsAppInfo` instances by `AppInfoSeqNum`. |
| `GetHashCode` | `Public Overrides Function GetHashCode() As Integer` | Returns the hash code of `AppInfoSeqNum`. |
| `ToString` | `Public Overrides Function ToString() As String` | Returns `AppInfoSeqNum` as a string. |
| `NewAppInfo` | `Public Shared Function NewAppInfo(ByVal inDataportal As IDataPortalInfo, ByVal inAppInfoSeqNum As Integer) As clsAppInfo` | Creates a new BOF object by calling the data-access layer create path with a criteria object. |
| `GetAppInfo` | `Public Shared Function GetAppInfo(ByVal inDataportal As IDataPortalInfo, ByVal inAppInfoSeqNum As Integer) As clsAppInfo` | Retrieves one info object by sequence number. |
| `CreateNewAppInfo` | `Public Shared Function CreateNewAppInfo(inDPI As IDataPortalInfo, inAuditStruct As SAIF.Framework.Logging.AuditInfoStruct) As clsAppInfo` | Creates, populates, saves, and returns a new info object from `AuditInfoStruct`. |
| `CreateNewAppInfo` | `Public Shared Function CreateNewAppInfo(inDPI As IDataPortalInfo, inAppName As String, inEnvironment As String, inAuditDate As DateTime, inDataText As String, inMachineName As String, inPageName As String, inMessageText As String, inUserName As String) As clsAppInfo` | Creates, populates, saves, and returns a new info object from discrete values. |

## Behavioral notes
- Insert operations execute [SQL-004](../../sql/SQL-004-saif-application-logview.md) and then [SQL-002](../../sql/SQL-002-saif-application-logview.md) to capture the identity value.
- `BeforeInsert` binds `@Purge_Date` with `Now.AddDays(30)`, which aligns with [BR-007](../../business-rules.md#br-007-audit-rows-receive-a-30-day-purge-date).
- `AfterRetrieve` accepts exactly one returned row and otherwise throws `ApplicationException("Invalid Results")`, which aligns with [BR-005](../../business-rules.md#br-005-single-object-retrieval-requires-exactly-one-row).

## Constraints and usage notes
- Row properties use private setters in source, so callers populate them through the factory methods or BOF load path.

## Sources
- `Application\SAIF.Application.LogView\clsAppInfo.vb`
