---
title: SAIF.Presentation overview
summary: High-level purpose, scope, and responsibilities for this library.
status: draft
owner: SAIF Documentation Team
last_reviewed: 2026-08-17
library: SAIF.Presentation
reference_type: package
---

# SAIF.Presentation overview

> **Documentation context:** Packaged Component (NuGet)

`SAIF.Presentation` is a single-purpose presentation-tier library that provides a per-user, per-application/page preference (settings) store for SAIF web and Windows Forms applications, mediating between calling UI code and the SAIF BOF data-access layer.

## Purpose
- Provide an in-memory, per-user preference (settings) cache that is loaded once on construction and can be read and mutated without a database round-trip.
- Offer scoped preference storage — application-level, page-level, and web-level — so consuming UI code can store settings appropriate to its own granularity (e.g., a single control's page vs. an entire application).
- Persist accumulated in-memory changes back to the Oracle-backed preference store on demand via an explicit `Save()` call, delegating all SQL/BOF persistence work to `SAIF.Framework.Preferences.PreferenceData`.
- Consumed by other SAIF presentation-tier libraries (`SAIF.Presentation.Web.Core.Infragistics103`, `SAIF.Presentation.Web.MVC`, `SAIF.Presentation.Web.Controls.V2.Menu`, `SAIF.Presentation.Web.Controls.AJAX.Infragistics103`) as a same-repo project reference, recompiled from source rather than consumed as a compiled binary*.

## Responsibilities
- Cache all `Preference` groups for the authenticated portal user in memory on construction.
- Provide scoped read/write access to preference key-value pairs via the `Item` indexer and the `Add`/`Remove`/`Clear`/`Delete` members.
- Resolve the "current page" identity via web request path parsing or, in non-web contexts, an explicit override or stack-trace-based inference*.
- Persist in-memory preference changes to the Oracle-backed `PreferenceData` store on explicit `Save()` calls.
- Resolve its own Oracle connection target through the `SAIF.Framework.Common` environment-service abstraction rather than reading local configuration (see [Configuration](configuration.md)).

## Key components
- `clsPreferences`: the sole public service — an in-memory preference cache plus a thin persistence-orchestration layer over `PreferenceData`.
- `PrefScope`: a public enum (`AppLevel`, `PageLevel`, `WebLevel`) that defines the boundary at which a preference key is stored/retrieved.

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Related documentation
- [Index](index.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Business rules](business-rules.md)
- [Configuration](configuration.md)
- [API reference](api/index.md)

## Sources
- SAIF.Presentation\clsPreferences.vb
- SAIF.Presentation\SAIF.Presentation.vbproj
- SAIF.BOF.Presentation.Web.Infragistics103.nuspec
