Architect.DomainModeling 2.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Architect.DomainModeling --version 2.0.0
NuGet\Install-Package Architect.DomainModeling -Version 2.0.0
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="Architect.DomainModeling" Version="2.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Architect.DomainModeling --version 2.0.0
#r "nuget: Architect.DomainModeling, 2.0.0"
#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.
// Install Architect.DomainModeling as a Cake Addin
#addin nuget:?package=Architect.DomainModeling&version=2.0.0

// Install Architect.DomainModeling as a Cake Tool
#tool nuget:?package=Architect.DomainModeling&version=2.0.0

A complete Domain-Driven Design (DDD) toolset for implementing domain models, including base types and source generators.

Release notes:

- BREAKING: Generated DummyBuilders now use UTC datetimes for generated defaults and for interpreting datetime strings.
- Semi-breaking: Generated types no longer add [Serializable] attribute, since there would be no way to remove it.
- Generated types are now easier to read, using ?-based nullables instead of attributes.
- Identity and WrapperValueObject<TValue> types now honor the underlying type's nullability in ToString().
- Identity and WrapperValueObject<TValue> types' generated System.Text.Json serializers now implement ReadAsPropertyName() and WriteAsPropertyName(), enabling serialization of such types when they are used as dictionary keys (only in .NET 7 and up).
- DummyBuilderGenerator: WrapperValueObject<string> and IIdentity<string> constructor params now get a string value equal to the param name instead of the type name (e.g. "FirstName" and "LastName" instead of "ProperName" and "ProperName").
- Added some missing nullable annotations.
- IIdentity<T> now has an explicit notnull constraint (whereas before this was only indirectly enforced by its IEquatable<T> interface).
- Identity types now serialize additional large numeric types as string, to avoid JavaScript overflows: UInt128 and Int128.
- Identity types generated for Entity<TId, TIdPrimitive> now have a summary.
- Identity types wrapping a non-nullable string now explain the non-nullness for default struct instances, in summaries for ToString(), Value, and convert-to-string operators.
- Identity types: Fixed a bug where string representations of numeric IDs could contain meaningless decimal places, e.g. when a decimal was internally represented as 1.0.
- Identity types: Fixed a bug in the generated JSON converters for IIdentity<decimal>, where an incorrect ArgumentNullException or NullReferenceException could be thrown instead of the expected JsonException/JsonSerializationException.
- Fixed a compile-time bug where the source generator for ValueObjects would create non-compiling equality/comparison for properties of types created solely by source generators.
- Fixed a potential bug in Entity<TId>, where entities of different types could be considered equal if they used the same TId (even though the latter is not advisable).
- Added support for trimming.
- Minor performance optimizations.

- Improved performance by using incremental generators.
- Made it easier to navigate into the right file, thanks to a comment just before the generated type definition.
- Generated source now uses the common .g.cs suffix.
- Fixed a compile-time bug where [Wrapper]ValueObject inheritance combined with the IIdentity interface would cause an unwarranted warning.
- Fixed a compile-time bug where the source generator would fail to acknowledge a type with the SourceGeneratedAttribute on one partial and the required base type on another.
- Fixed a compile-time bug where the source generator would crash if the partial to be extended already consisted of multiple partials.
- Fixed a compile-time bug where the DummyBuilder source generator would crash if it encountered a constructor taking a parameter that is a source-generated IIdentity.
- Reduced the need for duplicate type names to require a uniquefier in the generated source name.

Product 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. 
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
3.0.2 2,790 12/27/2023
2.0.0 3,954 3/23/2023
1.0.3 1,260 6/3/2022
1.0.2 744 5/2/2022