Skip to content

SAIF.Framework.Preferences dependencies

SAIF.Framework.Preferences has a minimal dependency footprint: one internal binary reference to SAIF.Framework (built from SAIF.Framework.Core), standard .NET BCL assemblies, and one Oracle database table. No NuGet <PackageReference> or packages.config entries were found in the project file.

Internal dependencies

Dependency Type Usage
SAIF.Framework (assembly, produced by SAIF.Framework.Core) Internal Resolved via a HintPath binary reference (..\SAIF.Framework.Core\bin\SAIF.Framework.dll), not a <ProjectReference>. Provides IDataPortalInfo, SqlHelper.ResultSetQuery, SqlHelper.ScalarQuery<T>, SqlHelper.NewParm, and clsResultSet.DataRow, used directly by PreferenceData to execute inline SQL against USER_PREFERENCE.*

External dependencies

Dependency Version Usage
System, System.Core, System.Data, System.Xml, System.Xml.Linq, System.Data.DataSetExtensions (BCL, project-referenced) Standard .NET assembly references declared in the .csproj.
System.Web.Extensions (BCL, project-referenced) Provides System.Web.Script.Serialization.JavaScriptSerializer, used in GetPreferencesForUser to deserialize the PREFERENCE_TEXT JSON payload into a Dictionary<string,string>.

Dependency risks and notes

  • Deviation from standard BOF pattern: Unlike most BOF libraries, PreferenceData bypasses the clsBusinessBase/clsBusinessCollectionBase + IBusinessCriteria object-lifecycle model and issues inline Oracle SQL directly through SqlHelper.ResultSetQuery/SqlHelper.ScalarQuery<T> against a single table, USER_PREFERENCE. Consumers and maintainers expecting the standard business-object/criteria pattern should be aware this library does not follow it.
  • Binary reference, not project reference: The dependency on SAIF.Framework is wired through a HintPath reference to a prebuilt DLL rather than a <ProjectReference> to SAIF.Framework.Core. The local .sln builds against the sibling project's output, but the .csproj itself does not express this as a project-to-project reference, which can cause stale-binary risk if SAIF.Framework.Core changes without a rebuild in dependency order.*
  • Externally supplied execution context: This library resolves no configuration or connection settings itself (no IEnvironmentService, ConfigurationManager.AppSettings, Web.config/App.config, or DbConnectionManager usage). All database/portal context is supplied by the caller via the injected IDataPortalInfo, so correctness depends entirely on the host application configuring that context correctly.
  • Open question — possible duplicate implementation: A separate PreferenceData.vb implementing similar preference persistence exists at SAIF.Framework.Core\Preferences\PreferenceData.vb. This is a distinct file belonging to SAIF.Framework.Core, outside the scope of this library's analysis; whether it duplicates, supersedes, or is unrelated to this library's PreferenceData class is unconfirmed and should be resolved before consolidating documentation across the two libraries.**
  • Single-table, no-join footprint: All 7 cataloged SQL statements (see SQL catalog) in this library reference only USER_PREFERENCE, with no joins or foreign-key relationships to other tables, limiting the blast radius of schema changes to this one table.
  • Database type is Oracle, evidenced by colon-prefixed bind variables (:userid, :appname, :pagename, :prefs, :updated, :updateby) and the USER_PREFERENCE_SEQ.nextval sequence-generation idiom used for key generation in InsertPref. No OWNER.TABLE_NAME schema qualifier appears in any SQL statement, and no Web.config/App.config file exists in this library to confirm the connecting Oracle schema owner.**

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.

Sources

  • SAIF.Framework.Preferences\SAIF.Framework.Preferences.csproj
  • SAIF.Framework.Preferences\PreferenceData.cs
  • SAIF.Framework.Preferences\Preference.cs
  • SAIF.Framework.Core\V1\DataAccessLayer\SqlHelper.vb
  • SAIF.Framework.Core\Preferences\PreferenceData.vb