OGA.DomainBase
2.2.5
dotnet add package OGA.DomainBase --version 2.2.5
NuGet\Install-Package OGA.DomainBase -Version 2.2.5
<PackageReference Include="OGA.DomainBase" Version="2.2.5" />
paket add OGA.DomainBase --version 2.2.5
#r "nuget: OGA.DomainBase, 2.2.5"
// Install OGA.DomainBase as a Cake Addin #addin nuget:?package=OGA.DomainBase&version=2.2.5 // Install OGA.DomainBase as a Cake Tool #tool nuget:?package=OGA.DomainBase&version=2.2.5
OGA.DomainBase
Base Library for Domain Entities and value objects
Description
This is the base set of standardized classes for domain design usage. The intention of this library is to be consumed by the domain layer of an application. Specifically, this library is meant to provide the base domain entity and value object in a layered domain driven design.
This library includes the following:
- Aggregate root interface, to be inherited by all aggregate types.
- Base repository interface, to be inherited by all repository classes.
- Base configuration element entity class for standardized configuration storage.
- Base domain object, to be inherited by all domain classes.
- Base value object, to be inherited by all value objects, and classes with sample usage.
- Base user context class, to allow for the implementation of role-based security at the domain service layer.
- Query helpers to produce sorted and filtered paginated query results, at the domain service layer, with predicate building.
- Domain Service base, which includes UserContext and corelationId tracking.
Features
One feature of the domain base in this library is that the Id property is generic. It can be long, Int32, Guid, string, etc...
This provides flexibility for different design cases:
- Small domains or ones that that need the lookup speed of integer-based keys.
- Domain that use keys with embedded type... key strings such as 'vm:1234' (like the MoRef in the VSphere domain model).
- Large decentralized models, where the design choice for key type is driven by collisionless eventual consistency (Guid keys exist at instantiation).
- A write-model paradigm, recording immutable events for posterity, whose left-fold (projection) of events must recreate entities with the same key, everytime.
Installation
OGA.DomainBase is available via NuGet:
Dependencies
This library depends on:
Building OGA.DomainBase
This library is built with the new SDK-style projects. It contains multiple projects, one for each of the following frameworks:
- NET 5
- NET 6
- NET 7
And, the output nuget package includes runtimes targets for:
- linux-any
- win-any
Framework and Runtime Support
Currently, the nuget package of this library supports the framework versions and runtimes of applications that I maintain (see above). If someone needs others (older or newer), let me know, and I'll add them to the build script.
Visual Studio
It is currently built using Visual Studio 2019 17.1.
License
Please see the License.
Opinionation Apology...
This library references NLog, directly, for now.
I understand this may appear overly opinionated, at the domain layer. I agree... though, NLog works very well.
Once I get a chance to circle back, and work through a more agnostic logging interface, I will update (removing the specific logger tie).
You're welcome to swap out and compile whatever logger you'd like, of course.
If you have the need or feel inclined, send me feedback or a pull, so I know it helps someone, to make time and generalize the logger.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. 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 was computed. 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. |
-
net5.0
- NLog (>= 5.0.4)
- OGA.SharedKernel (>= 3.5.4)
-
net6.0
- NLog (>= 5.0.4)
- OGA.SharedKernel (>= 3.5.4)
-
net7.0
- NLog (>= 5.0.4)
- OGA.SharedKernel (>= 3.5.4)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on OGA.DomainBase:
Package | Downloads |
---|---|
OGA.InfraBase
Base library for infrastructure classes, and entities of any Id type. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.2.5 | 261 | 4/5/2024 |
2.2.4 | 334 | 3/29/2024 |
2.2.3 | 216 | 3/28/2024 |
2.2.2 | 135 | 3/28/2024 |
2.2.1 | 149 | 3/28/2024 |
2.2.0 | 148 | 3/28/2024 |
2.1.6 | 236 | 3/18/2024 |
2.1.5 | 123 | 3/18/2024 |
2.1.4 | 209 | 3/18/2024 |
2.1.3 | 129 | 3/18/2024 |
2.1.2 | 146 | 3/17/2024 |
2.1.1 | 118 | 3/17/2024 |
2.1.0 | 174 | 3/13/2024 |
2.0.27 | 118 | 3/13/2024 |
2.0.26 | 254 | 4/9/2023 |
2.0.25 | 216 | 4/9/2023 |
2.0.24 | 244 | 3/27/2023 |
2.0.23 | 253 | 3/27/2023 |
2.0.22 | 269 | 2/20/2023 |
2.0.21 | 272 | 2/20/2023 |
2.0.20 | 261 | 2/19/2023 |
2.0.19 | 245 | 2/19/2023 |
2.0.18 | 245 | 2/19/2023 |
2.0.17 | 267 | 2/18/2023 |
2.0.16 | 277 | 2/18/2023 |
2.0.15 | 282 | 2/18/2023 |
2.0.14 | 242 | 2/18/2023 |
2.0.13 | 239 | 2/18/2023 |
2.0.12 | 235 | 2/18/2023 |
2.0.11 | 279 | 2/18/2023 |
2.0.10 | 264 | 2/18/2023 |
(Please write the package release notes in "OGA.DomainBase-RELEASE_NOTES.txt".)