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
<PackageReference Include="JJ.Framework.Business.Legacy" Version="0.260.7438" />
<PackageVersion Include="JJ.Framework.Business.Legacy" Version="0.260.7438" />
<PackageReference Include="JJ.Framework.Business.Legacy" />
paket add JJ.Framework.Business.Legacy --version 0.260.7438
#r "nuget: JJ.Framework.Business.Legacy, 0.260.7438"
#:package JJ.Framework.Business.Legacy@0.260.7438
#addin nuget:?package=JJ.Framework.Business.Legacy&version=0.260.7438
#tool nuget:?package=JJ.Framework.Business.Legacy&version=0.260.7438
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.
Resulttypes - Elegant way to return data, status and messages from your operations.IResult- Common interface for result types.ResultBase- Base class with core properties:SuccessandMessages.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,DirtyandDeleted. - 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.
- Simple in-memory holder for entity/storage state like
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,UpdateandDelete. 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.
- 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
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:
EntityStatusManagerandGetListIsDirty:- Framework-agnostic
New/Deleted/Dirtyflag container. ISideEffectfor keeping business logic units separated.- Bug fix: Entity status
NewandDeletedwere accidentally stored asDirty.
2026-07-07 | 0.258/5.0 : Result Type Legacy Move
Resulttypes.- Moved from
.Coreto the.Legacyproject. - Removed
JJ.Business.IO.Coreproject variant. - Full, meaningful test coverage, IntelliSense docs.
- Tighter nullability, diagnostic texts.
2026-07-08 | 0.259/5.1 : Result Type Rework
- Success =
falseby default (previously true) improving compatibility and security. - Add
SuccesfulandVoidResultaliases for Success and Result for compatibility. Messagesnot separated by commas in diagnostics texts. Punctuation left up to the messages themselves.
💬 Feedback
Got feedback or questions? You can reach me here.
| Product | Versions 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. |
-
.NETStandard 2.0
- JJ.Framework.PlatformCompatibility.Legacy (>= 0.260.7438)
- JJ.Framework.Reflection.Legacy (>= 0.260.7438)
-
.NETStandard 2.1
- JJ.Framework.PlatformCompatibility.Legacy (>= 0.260.7438)
- JJ.Framework.Reflection.Legacy (>= 0.260.7438)
-
net10.0
- JJ.Framework.PlatformCompatibility.Legacy (>= 0.260.7438)
- JJ.Framework.Reflection.Legacy (>= 0.260.7438)
-
net6.0
- JJ.Framework.PlatformCompatibility.Legacy (>= 0.260.7438)
- JJ.Framework.Reflection.Legacy (>= 0.260.7438)
-
net7.0
- JJ.Framework.PlatformCompatibility.Legacy (>= 0.260.7438)
- JJ.Framework.Reflection.Legacy (>= 0.260.7438)
-
net8.0
- JJ.Framework.PlatformCompatibility.Legacy (>= 0.260.7438)
- JJ.Framework.Reflection.Legacy (>= 0.260.7438)
-
net9.0
- JJ.Framework.PlatformCompatibility.Legacy (>= 0.260.7438)
- JJ.Framework.Reflection.Legacy (>= 0.260.7438)
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 |