FaimlyT.DDD.NetFramework.DataAccess.Cosmos
3.0.0
dotnet add package FaimlyT.DDD.NetFramework.DataAccess.Cosmos --version 3.0.0
NuGet\Install-Package FaimlyT.DDD.NetFramework.DataAccess.Cosmos -Version 3.0.0
<PackageReference Include="FaimlyT.DDD.NetFramework.DataAccess.Cosmos" Version="3.0.0" />
<PackageVersion Include="FaimlyT.DDD.NetFramework.DataAccess.Cosmos" Version="3.0.0" />
<PackageReference Include="FaimlyT.DDD.NetFramework.DataAccess.Cosmos" />
paket add FaimlyT.DDD.NetFramework.DataAccess.Cosmos --version 3.0.0
#r "nuget: FaimlyT.DDD.NetFramework.DataAccess.Cosmos, 3.0.0"
#:package FaimlyT.DDD.NetFramework.DataAccess.Cosmos@3.0.0
#addin nuget:?package=FaimlyT.DDD.NetFramework.DataAccess.Cosmos&version=3.0.0
#tool nuget:?package=FaimlyT.DDD.NetFramework.DataAccess.Cosmos&version=3.0.0
FaimlyT.DDD
The Faimly-T DDD tactical framework, published as public NuGet packages on nuget.org (ADR-050). This repo owns the framework source, its tests, and the release pipeline; consuming applications (e.g. tmpl-backend-client-dotnet) reference the packages — never this source directly.
| Package | What's inside |
|---|---|
FaimlyT.DDD.NetFramework |
Entity / Aggregate / ValueObject base objects, EventStream journal (state-persisted + event journal, ADR-001), typed domain events + publisher/subscriber contracts, Repository & Specification abstractions (QueryConstraint), State pattern, DomainException catalog, the self-describing use-case dispatcher (Validate → Authorize → Handle) with FluentValidation |
FaimlyT.DDD.NetFramework.DataAccess.Cosmos |
Azure Cosmos DB (SQL API) persistence: DTO anti-corruption layer, collection repositories (etag concurrency, paging), parameterized QueryConstraint → QueryDefinition bridge, durable event-journal store. Depends on the core package |
Both target net10.0.
Consuming the packages
The packages are public on nuget.org — no authentication, no credentials, no setup. A consumer repo's nuget.config declares the single anonymous source https://api.nuget.org/v3/index.json (see the template repo for the canonical example); a clean machine and CI both restore with zero secrets.
Older versions (≤ 3.0.0) also exist on the retired Faimly-T GitHub Packages feed; nothing references that feed anymore, and it must not be reintroduced (ADR-050).
Releasing a new version
Merge to
main(CI builds, tests, and pack-smokes every push/PR).Tag and push:
git tag v3.0.1 && git push origin v3.0.1release.ymlbuilds, tests, packs withVersion=3.0.1(from the tag), and pushes both packages to nuget.org via Trusted Publishing — the workflow's OIDC identity is exchanged for a short-lived push key (NuGet/login), so no publish secret is stored anywhere. The authorizing policy lives on nuget.org (Package OwnerMaxRodriguez, repoFaimly-T/DDD-Template-Nuget, workflowrelease.yml). The workflow can also be run manually (Actions → release → Run workflow) with an explicit version, e.g. to publish a version whose tag already exists.
Versioning is SemVer by hand: major for any breaking change to the public API (renames included — consumers fossilize names), minor for additive API, patch for fixes. nuget.org versions are immutable (unlist, never delete) — a botched release means a new patch tag.
Developing against the template
The template repo has a UseLocalDdd switch that flips its FaimlyT.DDD.* PackageReferences to ProjectReferences into a local checkout of this repo:
dotnet build -p:UseLocalDdd=true # in the template repo, with this repo checked out locally
Iterate here with live source debugging, and only tag a release when the change is done. CI in the template never uses the switch, so the real package path is always what's validated.
Layout
src/FaimlyT.DDD.NetFramework/ Core tactical framework
src/FaimlyT.DDD.NetFramework.DataAccess.Cosmos/ Cosmos SQL persistence
test/FaimlyT.DDD.Tests/ xUnit suite (in-memory, no infra needed)
docs/ ADR-001 + the pre-publish quality review
Framework tests that depend on the template's sample domain (ExampleReferenceDDD) intentionally stayed in the template repo (test/Test.UseCases/TestDDDFramework/).
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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. |
-
net10.0
- FaimlyT.DDD.NetFramework (>= 3.0.0)
- Microsoft.Azure.Cosmos (>= 3.62.0)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0)
- Microsoft.Extensions.Options (>= 10.0.0)
- Newtonsoft.Json (>= 13.0.3)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.