JJ.Framework.Business.Legacy 0.260.7438

Prefix Reserved
dotnet add package JJ.Framework.Business.Legacy --version 0.260.7438
                    
NuGet\Install-Package JJ.Framework.Business.Legacy -Version 0.260.7438
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="JJ.Framework.Business.Legacy" Version="0.260.7438" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="JJ.Framework.Business.Legacy" Version="0.260.7438" />
                    
Directory.Packages.props
<PackageReference Include="JJ.Framework.Business.Legacy" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add JJ.Framework.Business.Legacy --version 0.260.7438
                    
#r "nuget: JJ.Framework.Business.Legacy, 0.260.7438"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package JJ.Framework.Business.Legacy@0.260.7438
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=JJ.Framework.Business.Legacy&version=0.260.7438
                    
Install as a Cake Addin
#tool nuget:?package=JJ.Framework.Business.Legacy&version=0.260.7438
                    
Install as a Cake Tool

JJ.Framework.Business.Legacy

Classes to support a business logic layer.

A historic version released in aid of older apps, that still hold value. Now targets .NET 10 and .NET Standard supporting native compilation and code trimming for wide compatibility, with 100% meaningful test coverage, doc pop-ups everywhere.

A version from a different point in time is JJ.Framework.Business. That one has additional classes to manage bidirectional relationships between entities, but also excludes the EntityStatusManager class. It only officially supports an older version of .NET, even though compatibility with a newer .NET should be fine.


  • Result types - Elegant way to return data, status and messages from your operations.

    • IResult - Common interface for result types.
    • ResultBase - Base class with core properties: Success and Messages.
    • Result - Use when there's no return value, just success / failure info.
    • Result<T> - Returns data along with the status metadata.

  • EntityStatusManager

    • Simple in-memory holder for entity/storage state like New, Dirty and Deleted.
    • The goal: let business logic ask "does this object look new/dirty/deleted? without depending on a database or a large persistence framework. You can fill this object from wherever is convenient (service code, UI, or persistence layer) and pass it around. Business rules can then react to those flags (for example: update LastModified) without being tied to how the data is stored.

  • ISideEffect

    • Used for some polymorphism between small pieces of business logic that go off as a result of altering or creating data. For instance storing the date time modified or setting default values or automatically generating a name might all be wrapped in side-effects, that are executed upon calling methods, like Create, Update and Delete. Using separate classes for side-effects, creates overview over those pieces of business logic, that are the most creative of all, and prevents those special things that need to happen from being entangled with other code.

  • GetListIsDirty

    • Compares two lists (a source list of data and a destination list of data). Determines whether a list is dirty. This means that it checks whether items were removed, added or changed. (The changing of items does not mean that the entities themselves are dirty, it means that a list position now points to another object.)

Release Notes

2026-02-23 | 0.250/3.8 : Legacy
  • Historic version. Full meaningful test coverage. Features:
  • EntityStatusManager and GetListIsDirty:
  • Framework-agnostic New/Deleted/Dirty flag container.
  • ISideEffect for keeping business logic units separated.
  • Bug fix: Entity status New and Deleted were accidentally stored as Dirty.
2026-07-07 | 0.258/5.0 : Result Type Legacy Move
  • Result types.
  • Moved from .Core to the .Legacy project.
  • Removed JJ.Business.IO.Core project variant.
  • Full, meaningful test coverage, IntelliSense docs.
  • Tighter nullability, diagnostic texts.
2026-07-08 | 0.259/5.1 : Result Type Rework
  • Success = false by default (previously true) improving compatibility and security.
  • Add Succesful and VoidResult aliases for Success and Result for compatibility.
  • Messages not separated by commas in diagnostics texts. Punctuation left up to the messages themselves.

💬 Feedback

Got feedback or questions? You can reach me here.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 is compatible. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.260.7438 107 7/26/2026
0.259.7239 117 7/9/2026
0.257.7151 111 7/2/2026
0.256.7095 108 6/30/2026
0.255.7026 131 6/23/2026
0.255.7023 134 6/23/2026
0.254.6251 126 4/25/2026
0.253.6073 115 4/8/2026
0.252.6001 115 4/4/2026
0.251.5729 129 3/16/2026
0.251.5705 124 3/15/2026
0.250.5600 128 3/13/2026
0.250.5203 118 2/26/2026
0.250.4991 130 2/23/2026
0.250.4987 124 2/23/2026