Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
5bc29b9
📝 docs: add deep repository improvement plan
claude Jul 16, 2026
77121e5
🔒 fix(sql): parameterize SqlExecutor to close SQL injection
claude Jul 16, 2026
efe597f
🐞 fix(core): correct DI registration and double-dispose of UnitOfWork
claude Jul 16, 2026
0e8d540
🐞 fix(read): honour configuration in All/Any and accept default keys
claude Jul 16, 2026
d874197
📝 docs: record Phase 1 implementation status in improvement plan
claude Jul 16, 2026
346a20f
🐞 fix(mongodb): target the configured database and fail loudly
claude Jul 16, 2026
c2dfad1
⚡ fix(core): parameterize and cache the find-by-key expression
claude Jul 16, 2026
a18998f
🐞 fix(di): honour lifetime, dedupe, and tolerate unloadable types
claude Jul 16, 2026
04f42d2
✅ test(read): cover GetAllAsync and document the load-bearing Where
claude Jul 16, 2026
30413b0
⚡ perf(async): add ConfigureAwait(false) across the library
claude Jul 16, 2026
41ad067
📝 docs: update Phase 1 status (P1/P6, A4/M7, M4, ConfigureAwait; M8 c…
claude Jul 16, 2026
8fde116
🐞 fix(mongodb): reject update expressions that reference the entity
claude Jul 18, 2026
89c3bac
🐞 fix(core): stop disposing the injected UnitOfWork (ownership)
claude Jul 18, 2026
6c416fe
🐞 fix(read): deterministic pagination via primary-key fallback ordering
claude Jul 18, 2026
fa79643
📝 docs: mark Phase 1 complete (C2, P2, A5); add MongoDb.Tests to solu…
claude Jul 18, 2026
2757465
🔥 chore: remove dead MSBump/Directory.Build.targets; fix PK2 project ref
claude Jul 18, 2026
15a2298
📝 docs: record Phase 0 status (CI/release split, dead build/ removal)
claude Jul 18, 2026
c59fb6e
refactor: extract shared relational implementation into a single package
claude Jul 19, 2026
1c4b632
docs: translate improvement plan to English and record Phase 2 status
claude Jul 19, 2026
f024343
chore: centralize shared package metadata in Directory.Build.props
claude Jul 19, 2026
a1ff9f6
🔧 chore: restructure packages to per-major (8/10) and multi-framework…
equantictech Jul 20, 2026
4f2fd90
♻️ refactor(core): migrate base repositories to eQuantic.Core.Data v5…
equantictech Jul 20, 2026
b6dbfd7
♻️ refactor(relational): rehome SQL abstractions and adapt to v5 cont…
equantictech Jul 20, 2026
00c19d3
♻️ refactor(providers): adapt SqlServer/PostgreSql/MySql/MongoDb to v…
equantictech Jul 20, 2026
1c62628
✅ test: update tests to eQuantic.Core.Data v5 contracts
equantictech Jul 20, 2026
89a1881
👷 ci: prune build matrix to the net8/net10 package set
equantictech Jul 20, 2026
944aae0
📝 docs: rewrite README for v5 contracts and the per-major/multi-frame…
equantictech Jul 20, 2026
7b97d91
📝 docs: rewrite Repository.md walkthrough for eQuantic.Core.Data v5
equantictech Jul 20, 2026
bbb2b24
🐛 fix: serve IRepository/IAsyncRepository from the generic registration
equantictech Jul 20, 2026
50f4e4d
👷 ci: least-privilege token permissions and env-passed NuGet secret
equantictech Jul 20, 2026
765ffca
🔧 chore(deps): bump EF Core (8.0.29/10.0.10) and MongoDB.EntityFramew…
equantictech Jul 20, 2026
74119e0
👷 ci: define token permissions at the job level
equantictech Jul 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
name: CI

on:
push:
pull_request:

concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
build:
name: Build ${{ matrix.project }}
runs-on: ubuntu-latest
permissions:
contents: read
strategy:
fail-fast: false
matrix:
project:
- src/eQuantic.Core.Data.EntityFramework/eQuantic.Core.Data.EntityFramework.csproj
- src/eQuantic.Core.Data.EntityFramework/eQuantic.Core.Data.EntityFramework.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework/eQuantic.Core.Data.EntityFramework.Net10.csproj
- src/eQuantic.Core.Data.EntityFramework.Relational/eQuantic.Core.Data.EntityFramework.Relational.csproj
- src/eQuantic.Core.Data.EntityFramework.SqlServer/eQuantic.Core.Data.EntityFramework.SqlServer.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework.SqlServer/eQuantic.Core.Data.EntityFramework.SqlServer.Net10.csproj
- src/eQuantic.Core.Data.EntityFramework.MySql/eQuantic.Core.Data.EntityFramework.MySql.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework.MySql/eQuantic.Core.Data.EntityFramework.MySql.Net10.csproj
- src/eQuantic.Core.Data.EntityFramework.PostgreSql/eQuantic.Core.Data.EntityFramework.PostgreSql.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework.PostgreSql/eQuantic.Core.Data.EntityFramework.PostgreSql.Net10.csproj
- src/eQuantic.Core.Data.EntityFramework.MongoDb/eQuantic.Core.Data.EntityFramework.MongoDb.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework.MongoDb/eQuantic.Core.Data.EntityFramework.MongoDb.Net10.csproj
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Build
run: dotnet build ${{ matrix.project }} --configuration Release -p:ContinuousIntegrationBuild=true

test:
name: Test ${{ matrix.project }}
runs-on: ubuntu-latest
permissions:
contents: read
strategy:
fail-fast: false
matrix:
project:
- tests/eQuantic.Core.Data.EntityFramework.Tests/eQuantic.Core.Data.EntityFramework.Tests.csproj
- tests/eQuantic.Core.Data.EntityFramework.SqlServer.Tests/eQuantic.Core.Data.EntityFramework.SqlServer.Tests.csproj
- tests/eQuantic.Core.Data.EntityFramework.MongoDb.Tests/eQuantic.Core.Data.EntityFramework.MongoDb.Tests.csproj
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Test
run: dotnet test ${{ matrix.project }} --configuration Release
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
67 changes: 0 additions & 67 deletions .github/workflows/dotnetcore.yml

This file was deleted.

111 changes: 111 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: Release

# Only a pushed version tag (e.g. v10.0.3) triggers a release. A plain push to any branch — including
# master — no longer publishes anything; that was the previous, unintentional behavior (see
# docs/IMPROVEMENT_PLAN.md, finding Q1). To release: `git tag vX.Y.Z && git push origin vX.Y.Z`.
on:
push:
tags:
- 'v*.*.*'

concurrency:
group: release-${{ github.ref }}
cancel-in-progress: false

jobs:
build:
name: Build ${{ matrix.project }}
runs-on: ubuntu-latest
permissions:
contents: read
strategy:
fail-fast: false
matrix:
project:
- src/eQuantic.Core.Data.EntityFramework/eQuantic.Core.Data.EntityFramework.csproj
- src/eQuantic.Core.Data.EntityFramework/eQuantic.Core.Data.EntityFramework.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework/eQuantic.Core.Data.EntityFramework.Net10.csproj
- src/eQuantic.Core.Data.EntityFramework.Relational/eQuantic.Core.Data.EntityFramework.Relational.csproj
- src/eQuantic.Core.Data.EntityFramework.SqlServer/eQuantic.Core.Data.EntityFramework.SqlServer.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework.SqlServer/eQuantic.Core.Data.EntityFramework.SqlServer.Net10.csproj
- src/eQuantic.Core.Data.EntityFramework.MySql/eQuantic.Core.Data.EntityFramework.MySql.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework.MySql/eQuantic.Core.Data.EntityFramework.MySql.Net10.csproj
- src/eQuantic.Core.Data.EntityFramework.PostgreSql/eQuantic.Core.Data.EntityFramework.PostgreSql.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework.PostgreSql/eQuantic.Core.Data.EntityFramework.PostgreSql.Net10.csproj
- src/eQuantic.Core.Data.EntityFramework.MongoDb/eQuantic.Core.Data.EntityFramework.MongoDb.Net8.csproj
- src/eQuantic.Core.Data.EntityFramework.MongoDb/eQuantic.Core.Data.EntityFramework.MongoDb.Net10.csproj
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Build & pack
run: dotnet build ${{ matrix.project }} --configuration Release -p:ContinuousIntegrationBuild=true
- name: Upload package artifact
uses: actions/upload-artifact@v4
with:
name: nupkg-${{ strategy.job-index }}
path: artifacts/*.nupkg
if-no-files-found: error
retention-days: 7

test:
name: Test ${{ matrix.project }}
runs-on: ubuntu-latest
permissions:
contents: read
strategy:
fail-fast: false
matrix:
project:
- tests/eQuantic.Core.Data.EntityFramework.Tests/eQuantic.Core.Data.EntityFramework.Tests.csproj
- tests/eQuantic.Core.Data.EntityFramework.SqlServer.Tests/eQuantic.Core.Data.EntityFramework.SqlServer.Tests.csproj
- tests/eQuantic.Core.Data.EntityFramework.MongoDb.Tests/eQuantic.Core.Data.EntityFramework.MongoDb.Tests.csproj
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x
- name: Cache NuGet packages
uses: actions/cache@v4
with:
path: ~/.nuget/packages
key: ${{ runner.os }}-nuget-${{ hashFiles('**/*.csproj') }}
restore-keys: |
${{ runner.os }}-nuget-
- name: Test
run: dotnet test ${{ matrix.project }} --configuration Release

publish:
Comment thread
github-advanced-security[bot] marked this conversation as resolved.
Fixed
name: Publish to NuGet.org
runs-on: ubuntu-latest
permissions:
contents: read
needs: [build, test]
# This environment gates the publish behind whatever protection rules are configured for it in
# the repo's Settings -> Environments (e.g. required reviewers). GitHub auto-creates an environment
# on first use with NO protection rules, so a repo admin must add them for the gate to be effective.
environment:
name: nuget-release
url: https://www.nuget.org/profiles/eQuantic
steps:
- uses: actions/setup-dotnet@v4
with:
dotnet-version: 10.0.x
- name: Download all package artifacts
uses: actions/download-artifact@v4
with:
pattern: nupkg-*
path: artifacts
merge-multiple: true
- name: Push to NuGet.org
env:
NUGET_KEY: ${{ secrets.nuget_key }}
run: dotnet nuget push "artifacts/*.nupkg" --skip-duplicate -k "$NUGET_KEY" -s https://api.nuget.org/v3/index.json
32 changes: 32 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Central package metadata shared by every project in this repository.
Package-specific values (Description, AssemblyTitle, PackageId, Version, TargetFrameworks,
PackageTags, dependencies) stay in each .csproj — the per-.NET-major version lines are intentional.
-->
<Project>

<PropertyGroup>
<Authors>eQuantic Systems</Authors>
<Copyright>Copyright © 2016</Copyright>
<PackageProjectUrl>https://github.com/eQuantic/core-data-entityframework</PackageProjectUrl>
<RepositoryUrl>https://github.com/eQuantic/core-data-entityframework</RepositoryUrl>
<RepositoryType>Git</RepositoryType>
<PackageLicenseFile>LICENSE</PackageLicenseFile>
<PackageReadmeFile>README.md</PackageReadmeFile>
<PackageIcon>Icon.png</PackageIcon>
<LangVersion>latest</LangVersion>
<PackageOutputPath>$(MSBuildThisFileDirectory)artifacts/</PackageOutputPath>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
</PropertyGroup>

<!-- The LICENSE and README shipped inside every package live at the repository root. -->
<ItemGroup Condition="'$(IsPackable)' != 'false'">
<None Include="$(MSBuildThisFileDirectory)LICENSE" Pack="true" PackagePath="" Visible="false" />
<None Include="$(MSBuildThisFileDirectory)README.md" Pack="true" PackagePath="" Visible="false" />
</ItemGroup>

</Project>
Loading
Loading