-
Notifications
You must be signed in to change notification settings - Fork 0
✨ Migrate to eQuantic.Core.Data v5 contracts + per-major (net8/net10) packaging #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
edgarmesquita
merged 32 commits into
master
from
claude/repo-improvement-analysis-7emny7
Jul 20, 2026
Merged
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 77121e5
🔒 fix(sql): parameterize SqlExecutor to close SQL injection
claude efe597f
🐞 fix(core): correct DI registration and double-dispose of UnitOfWork
claude 0e8d540
🐞 fix(read): honour configuration in All/Any and accept default keys
claude d874197
📝 docs: record Phase 1 implementation status in improvement plan
claude 346a20f
🐞 fix(mongodb): target the configured database and fail loudly
claude c2dfad1
⚡ fix(core): parameterize and cache the find-by-key expression
claude a18998f
🐞 fix(di): honour lifetime, dedupe, and tolerate unloadable types
claude 04f42d2
✅ test(read): cover GetAllAsync and document the load-bearing Where
claude 30413b0
⚡ perf(async): add ConfigureAwait(false) across the library
claude 41ad067
📝 docs: update Phase 1 status (P1/P6, A4/M7, M4, ConfigureAwait; M8 c…
claude 8fde116
🐞 fix(mongodb): reject update expressions that reference the entity
claude 89c3bac
🐞 fix(core): stop disposing the injected UnitOfWork (ownership)
claude 6c416fe
🐞 fix(read): deterministic pagination via primary-key fallback ordering
claude fa79643
📝 docs: mark Phase 1 complete (C2, P2, A5); add MongoDb.Tests to solu…
claude 2757465
🔥 chore: remove dead MSBump/Directory.Build.targets; fix PK2 project ref
claude 15a2298
📝 docs: record Phase 0 status (CI/release split, dead build/ removal)
claude c59fb6e
refactor: extract shared relational implementation into a single package
claude 1c4b632
docs: translate improvement plan to English and record Phase 2 status
claude f024343
chore: centralize shared package metadata in Directory.Build.props
claude a1ff9f6
🔧 chore: restructure packages to per-major (8/10) and multi-framework…
equantictech 4f2fd90
♻️ refactor(core): migrate base repositories to eQuantic.Core.Data v5…
equantictech b6dbfd7
♻️ refactor(relational): rehome SQL abstractions and adapt to v5 cont…
equantictech 00c19d3
♻️ refactor(providers): adapt SqlServer/PostgreSql/MySql/MongoDb to v…
equantictech 1c62628
✅ test: update tests to eQuantic.Core.Data v5 contracts
equantictech 89a1881
👷 ci: prune build matrix to the net8/net10 package set
equantictech 944aae0
📝 docs: rewrite README for v5 contracts and the per-major/multi-frame…
equantictech 7b97d91
📝 docs: rewrite Repository.md walkthrough for eQuantic.Core.Data v5
equantictech bbb2b24
🐛 fix: serve IRepository/IAsyncRepository from the generic registration
equantictech 50f4e4d
👷 ci: least-privilege token permissions and env-passed NuGet secret
equantictech 765ffca
🔧 chore(deps): bump EF Core (8.0.29/10.0.10) and MongoDB.EntityFramew…
equantictech 74119e0
👷 ci: define token permissions at the job level
equantictech File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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: | ||
|
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 | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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> |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.