---
title: clsMenuFavoriteCollection
summary: API reference for clsMenuFavoriteCollection.
status: draft
owner: SAIF
last_reviewed: 2026-07-24
library: SAIF.Business.Menu
reference_type: package
---

# clsMenuFavoriteCollection

`clsMenuFavoriteCollection` is a BOF collection that retrieves a set of `clsMenuFavorite` records. It supports retrieval by user ID or a full unfiltered retrieval.

## Purpose
- Return all favorite records for a specific user or all users from `MENU_FAVORITE`.

## Context
- Namespace: `SAIF.Business.Menu`
- Assembly/package: `SAIF.BOF.Business.Menu`

## Public members

| Member | Signature | Purpose |
| --- | --- | --- |
| `UserID` | `Property UserID As String` | User ID filter; when non-empty triggers the by-user query.* |

## Inherited public members

The members below come from the BOF collection framework (`clsBusinessCollectionBase`) that underpins `clsMenuFavoriteCollection` through `clsBusinessCollection(Of T)`.

| Member | Signature | Purpose |
| --- | --- | --- |
| `MyGuid` | `Public ReadOnly Property MyGuid() As String` | Returns the collection's generated GUID identifier. |
| `ItemByGuid` | `Public ReadOnly Property ItemByGuid(ByVal inGuid As String) As clsBusinessBase` | Returns the child item with the matching framework GUID, if present. |
| `Contains` | `Public Function Contains(ByVal Item As clsBusinessBase) As Boolean` | Returns `True` when the active collection contains the supplied child object. |
| `ContainsDeleted` | `Public Function ContainsDeleted(ByVal Item As clsBusinessBase) As Boolean` | Returns `True` when the deleted-items list contains the supplied child object. |
| `Rules` | `Public ReadOnly Property Rules() As clsRulesManager` | Exposes the collection-level rules manager. |
| `ErrorCount` | `Public ReadOnly Property ErrorCount() As Integer` | Returns the number of current validation errors. |
| `ErrorMessages` | `Public ReadOnly Property ErrorMessages() As String()` | Returns the current validation error messages. |
| `WarningCount` | `Public ReadOnly Property WarningCount() As Integer` | Returns the number of current warning messages. |
| `WarningMessages` | `Public ReadOnly Property WarningMessages() As String()` | Returns the current warning messages. |
| `InformationalCount` | `Public ReadOnly Property InformationalCount() As Integer` | Returns the number of informational validation messages. |
| `InformationalMessages` | `Public ReadOnly Property InformationalMessages() As String()` | Returns the current informational messages. |
| `ValidateAllChildren` | `Public Overridable Property ValidateAllChildren() As Boolean` | Controls whether validation checks every child before returning validity. |
| `IsDirty` | `Public ReadOnly Property IsDirty() As Boolean` | Indicates whether any active or deleted child has unsaved changes. |
| `IsValid` | `Public Overridable ReadOnly Property IsValid() As Boolean` | Validates the collection and its children and reports whether the collection is valid. |
| `BeginEdit` | `Public Sub BeginEdit()` | Starts a nested edit session for the collection and its children. |
| `CancelEdit` | `Public Sub CancelEdit()` | Cancels the current edit session and restores the prior snapshot. |
| `ApplyEdit` | `Public Sub ApplyEdit()` | Commits the current edit session for the collection and its children. |
| `Add` | `Public Sub Add(ByVal inChild As clsBusinessBase)` | Adds a child business object to the collection. |
| `Remove` | `Public Sub Remove(ByVal inChild As clsBusinessBase)` | Removes the supplied child business object from the collection. |
| `Item` | `Default Public ReadOnly Property Item(ByVal index As Integer) As clsBusinessBase` | Returns the child object at the specified zero-based index. |
| `Clone` | `Public Function Clone() As Object` | Creates a cloned copy of the collection. |
| `Save` | `Public Overridable Function Save() As Boolean` | Persists dirty child objects and deletion state when the collection is valid. |
| `SaveChild` | `Public Overridable Function SaveChild() As Boolean` | Persists the collection when it is being managed as a child object. |
| `IsManaged` | `Public ReadOnly Property IsManaged() As Boolean` | Indicates whether the collection is operating in managed mode. |
| `IsFirst` | `Public ReadOnly Property IsFirst(ByVal inItem As clsBusinessBase) As Boolean` | Returns `True` when the supplied child is the first item in traversal order. |
| `First` | `Public Function First() As clsBusinessBase` | Moves traversal to the first item and returns it. |
| `FirstItem` | `Public ReadOnly Property FirstItem() As clsBusinessBase` | Returns the first item in the collection. |
| `Next` | `Public Function Next() As clsBusinessBase` | Advances traversal to the next item and returns it. |
| `IsNext` | `Public ReadOnly Property IsNext(ByVal inItem As clsBusinessBase) As Boolean` | Returns `True` when the supplied child is immediately after the current traversal position. |
| `NextItem` | `Public ReadOnly Property NextItem() As clsBusinessBase` | Returns the next item relative to the current traversal position. |
| `NextItem` | `Public ReadOnly Property NextItem(ByVal inRefPoint As clsBusinessBase) As clsBusinessBase` | Returns the item immediately after the supplied reference item. |
| `IsLast` | `Public ReadOnly Property IsLast(ByVal inItem As clsBusinessBase) As Boolean` | Returns `True` when the supplied child is the last item in traversal order. |
| `LastItem` | `Public ReadOnly Property LastItem() As clsBusinessBase` | Returns the last item in the collection. |
| `Last` | `Public Function Last() As clsBusinessBase` | Moves traversal to the last item and returns it. |
| `CurrentItem` | `Public ReadOnly Property CurrentItem() As clsBusinessBase` | Returns the current traversal item. |
| `CurrentIndex` | `Public ReadOnly Property CurrentIndex() As Integer` | Returns the current traversal index. |
| `IsCurrent` | `Public ReadOnly Property IsCurrent(ByVal inItem As clsBusinessBase) As Boolean` | Returns `True` when the supplied child is the current traversal item. |
| `SetCurrent` | `Public Sub SetCurrent(ByRef inObject As clsBusinessBase)` | Sets the current traversal item by object reference. |
| `SetCurrent` | `Public Sub SetCurrent(ByVal inIndex As Integer)` | Sets the current traversal item by zero-based index. |
| `IndexOf` | `Public ReadOnly Property IndexOf(ByVal inObject As clsBusinessBase) As Integer` | Returns the index of the supplied child object. |
| `IsPrevious` | `Public ReadOnly Property IsPrevious(ByVal inItem As clsBusinessBase) As Boolean` | Returns `True` when the supplied child is immediately before the current traversal position. |
| `Previous` | `Public Function Previous() As clsBusinessBase` | Moves traversal to the previous item and returns it. |
| `PreviousItem` | `Public ReadOnly Property PreviousItem() As clsBusinessBase` | Returns the previous item relative to the current traversal position. |
| `PreviousItem` | `Public ReadOnly Property PreviousItem(ByVal inRefPoint As clsBusinessBase) As clsBusinessBase` | Returns the item immediately before the supplied reference item. |
| `XMLElementName` | `Public Property XMLElementName() As String` | Gets or sets the root element name used when emitting collection XML. |
| `XMLItemName` | `Public Property XMLItemName() As String` | Gets or sets the element name used for individual child items in XML output. |
| `GetReportXML` | `Public Function GetReportXML(ByVal inElementName As String) As String` | Generates report-oriented XML using the supplied root element name. |
| `GetReportXML` | `Public Function GetReportXML(Optional ByVal inFileStream As System.IO.StreamWriter = Nothing) As String` | Generates report-oriented XML and can optionally stream the output while building it. |
| `ToXML` | `Public Function ToXML() As String` | Serializes the collection to XML using the configured default names. |
| `ToXml` | `Public Function ToXml(ByVal inTagName As String) As String` | Serializes the collection to XML using the supplied root tag name. |

## Behavioral notes
- When `UserID.Trim.Length > 0`, `BeforeRetrieve` binds `UserID` (max 30) and executes [SQL-020](../../sql/SQL-020-saif-business-menu.md).
- When `UserID` is empty, `BeforeRetrieve` executes [SQL-021](../../sql/SQL-021-saif-business-menu.md) with no parameters.
- `AfterRetrieve` populates `clsMenuFavorite` child objects from the `IDataReader` result.*

## Constraints and usage notes
- No sequence generation occurs in the collection; sequence is managed by the individual `clsMenuFavorite` object.

> **Note:** Statements marked with `*` were inferred from code structure, naming conventions, or contextual evidence where direct confirmation was not available in source artifacts.

## Sources
- `Legacy\BusinessObjectFramework\clsBusinessCollectionBase.vb`
- `Business\SAIF.Business.Menu\clsMenuFavoriteCollection.vb`
