Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
165 commits
Select commit Hold shift + click to select a range
4abc3b3
#44: Sign all assemblies.
msallin Oct 31, 2015
8bb8a16
Version 1.0
msallin Oct 31, 2015
e0669c4
Update README.md
msallin Nov 3, 2015
280a3c5
Update README.md
msallin Jan 10, 2016
4d2559f
#16: Refactoring and added SqliteDropCreateDatabaseWhenModelChanges.
msallin Jan 15, 2016
b33fd00
#16:Added additional framework dependency.
msallin Jan 17, 2016
ecf89c3
#16: Removed unnecessary dependencies to SQLite.
msallin Jan 17, 2016
43cdab0
#16: Updated to the newest SQLite version.
msallin Jan 17, 2016
9e21151
#16: Version 1.1.
msallin Jan 17, 2016
5101a9a
#16: Better comment.
msallin Jan 17, 2016
340ec0e
#16: Better solution for delete the database.
msallin Jan 17, 2016
b73f578
#16: TODO Comment.
msallin Jan 17, 2016
06b93ef
#16: Refactoring of the "IsSameModel"-method.
msallin Jan 17, 2016
83065e2
#16: Removed "NotMapped" attribute because its not necessary.
msallin Jan 17, 2016
628d93f
#16: Fix for .NET 4.0.
msallin Jan 17, 2016
e0bbef9
#16: Make internal types "internal".
Jan 18, 2016
9aefc21
#16: API changes.
Jan 18, 2016
fbb5b8f
#16: Updates the Readme.
Jan 18, 2016
54050e5
#16: Removed TODO comment.
Jan 18, 2016
ac87d30
Merge pull request #55 from msallin/Issue-16
msallin Jan 18, 2016
ded83dc
Fix for assembly version patching.
Jan 18, 2016
38c161f
Removed unused code.
Jan 18, 2016
4f06cfd
#60: Example code for composite indices with unique flag.
Apr 20, 2016
3843108
#27: Added UniqueAttribute.
Apr 21, 2016
20e2f50
#27: Added UniqueConstraint and tests for it.
Apr 21, 2016
e4845b4
#27: Use UniqueConstraint in the ColumnStatementCollectionBuilder.
Apr 21, 2016
2bf0121
#27: Added sample code and updated readme.
Apr 21, 2016
1c12d90
Merge pull request #61 from msallin/Issue-27
msallin Apr 21, 2016
5306d64
#42: Added collate attribute.
Apr 21, 2016
3689a3a
#42: Added CollateConstraint and tests.
Apr 21, 2016
b0d5d62
42: Use CollateConstraint and refactoring to make it easier to use at…
Apr 21, 2016
2896aed
#42: Added sample code and updated readme.
Apr 21, 2016
df75d29
Merge pull request #62 from msallin/Issue-42
msallin Apr 21, 2016
6ea8de4
Updated NuGet packages.
Apr 21, 2016
cb0ca2a
Set version to 1.2.0.{build}.
Apr 21, 2016
b0be36b
#60: Added sample code.
Apr 26, 2016
c6a1deb
Removed unused usings.
Apr 26, 2016
3bda882
#23: Added test for TableNameCreator.
Apr 26, 2016
c3cb75f
#23: Added test for IndexNameCreator.
Apr 26, 2016
5e3fd2b
#23: Added test for HashCreator.
Apr 26, 2016
27ea16d
#23: Added test for HistoryEntityTypeValidator.
Apr 26, 2016
9c31692
Marked Assemblies as CLSCompliant.
Apr 26, 2016
66c3595
Added custom code analysis ruleset.
Apr 26, 2016
558e42f
Used code analysis rule set in the SQLite.CodeFirst project.
Apr 26, 2016
52f55a8
Run code analysis on build.
Apr 26, 2016
9266156
Treat code analysis warnings as errors in release build.
Apr 26, 2016
0b66b5f
Fix for code analysis warnings.
Apr 26, 2016
ba6f3fd
#63: Support self ref associations.
msallin May 27, 2016
993fe10
Merge pull request #64 from msallin/Issue-63
msallin May 27, 2016
47a8277
Set version to 1.2.1
msallin May 27, 2016
6e7f2a9
Small enhancement for the ConnectionStringParser to make it more robust.
msallin Jun 11, 2016
0223767
Set version to 1.2.2
msallin Jun 11, 2016
7d1ddd2
#66: Code to reproduce the issue.
msallin Jun 17, 2016
18e44ed
#66: Bugfix. In IsSelfReferencing check the length before do string m…
msallin Jun 17, 2016
e08bd22
#23: Renamed HistoryEntityTypeValidator unit test.
msallin Jun 17, 2016
a41433d
Merge pull request #67 from msallin/topic/Issue-66
msallin Jun 17, 2016
9562ce2
Moved public framework parts into a own folder, like internal.
msallin Jun 17, 2016
d3ef126
Merge pull request #68 from msallin/topic/SmallRestructuring
msallin Jun 17, 2016
511d71f
Set version to 1.2.3
msallin Jun 17, 2016
8d7a6e4
#69: Fix for incorrect Self-Referencing FK created in special case en…
msallin Jul 9, 2016
89e4f79
Merge pull request #70 from msallin/topic/Issue-69
msallin Jul 9, 2016
4f174a3
Set version to 1.2.4
msallin Jul 9, 2016
69e1138
#76: Ability to use SQLite.CodeFirst with :memory:
Feb 27, 2017
9f4ce4d
Merge pull request #80 from msallin/#76
msallin Mar 3, 2017
97b962d
81: Added possibility to use pure autoincrement db column type.
okipol88 Feb 23, 2017
5f865f2
#81: Updated README.
msallin Mar 3, 2017
9e8f52d
Merge pull request #82 from msallin/#81
msallin Mar 4, 2017
5348c50
Set version to 1.3.0
msallin Mar 4, 2017
65d613d
Update README.md
msallin Apr 22, 2017
0a76f2d
#89 replaced '\\' with Path.DirectorySeparatorChar to support mono.
May 31, 2017
5f1f5d5
Merge pull request #90 from msallin/#89
msallin Jun 1, 2017
9c73a79
Set to version 1.3.1.
Jun 1, 2017
d554785
Fix spelling
ornatwork Jun 27, 2017
59071af
Merge pull request #93 from ornatwork/patch-1
msallin Jun 28, 2017
ac20432
Updated to SQLite v1.0.105.2
msallin Jul 9, 2017
4f54337
Merge pull request #94 from msallin/NewSQLiteVersion
msallin Jul 9, 2017
61ff207
Added Debug.Write to print out the generated SQL to the Output window.
msallin Jul 9, 2017
9e6bebe
#91: Renamed TableNameCreator to NameCreator and CreateTableName to E…
msallin Jul 9, 2017
8d43ce7
#91: Use NameCreator.EscapeName if an indexname was specified manually.
msallin Jul 9, 2017
456bb63
Merge pull request #95 from msallin/#91
msallin Jul 9, 2017
faa5102
Set version to 1.3.2.
msallin Jul 9, 2017
83d9802
Allow for a missing datasource which means that the datasource is a F…
jonkeda Oct 3, 2017
52ea237
Support Database Default values specified using a custom attribute #85
jonkeda Oct 5, 2017
149bb82
Fixed unittest for DefaultValueConstraint
jonkeda Oct 5, 2017
7c96bce
updated sql generation test with default
jonkeda Oct 7, 2017
cb649fd
Connection parser now returns :memory: instead of null when fulluri=:…
jonkeda Oct 7, 2017
5fda890
Merge pull request #100 from jonkeda/master
msallin Oct 8, 2017
5279fd9
Removed unnecessary code.
msallin Oct 8, 2017
662a6ed
Updated README.
msallin Oct 8, 2017
7f17c58
Set version to 1.4.0.
msallin Oct 8, 2017
4f95446
#97 Copy file attributes when recreating db file.
Nov 22, 2017
b98bf5c
Merge pull request #103 from msallin/#97
msallin Nov 22, 2017
4c02d11
Updated SQLite and EF packages.
Nov 22, 2017
4f1fbe7
Merge pull request #104 from msallin/NuGetUpdate
msallin Nov 22, 2017
4c9a70b
Update README.md
msallin Nov 22, 2017
8090504
#96 support custom collation.
Nov 22, 2017
90a21c2
Merge pull request #105 from msallin/#96
msallin Dec 28, 2017
8125edc
Fix for #109.
msallin Dec 28, 2017
d31b747
Merge pull request #110 from msallin/#109
msallin Dec 28, 2017
709c90b
Fix for #107.
msallin Dec 28, 2017
3181f80
Merge pull request #111 from msallin/#107
msallin Dec 28, 2017
72cc287
Set version to 1.5 and removed zapier webhook.
msallin Dec 28, 2017
4c5e31d
Updated README to express the support of custom collate functions.
msallin Dec 28, 2017
43dfc9c
Set entity framework version dependency to 6.2
Feb 3, 2018
cfd50f6
Set version to 1.5.1
Feb 3, 2018
04f6db1
Merge pull request #116 from msallin/#112
msallin Feb 3, 2018
9820fd8
#127: Added 'InMemoryDbTest' to show how to create reliable in memory…
msallin Jul 31, 2018
3af12e3
Added .vs folder to gitignore.
msallin Jul 31, 2018
9a4fff2
Merge pull request #131 from msallin/#127
msallin Jul 31, 2018
443710d
Update LICENSE
msallin Aug 9, 2018
5b333e2
Update README.md
msallin Nov 7, 2018
a5f2217
#137: Migrated to newest csproj-Format.
msallin Dec 8, 2018
dd8d954
#139: Deleted unnecessary transaction creation.
msallin Jan 26, 2019
fa35c5b
Set version to 1.5.2
msallin Jan 28, 2019
b812331
Fix appveyor csproj version patching.
msallin Jan 28, 2019
1958113
Create FUNDING.yml
msallin Jun 2, 2019
0b988a0
Update FUNDING.yml
msallin Jun 2, 2019
ca193d4
Update NuGet-Packages to the newest version
msallin Jun 11, 2019
4073694
Set Console and Test project target framework to net48
msallin Jun 11, 2019
c82ff24
Fix some markdown issues in the read me and correct typos
msallin Jun 11, 2019
4f30a01
Update README.md
msallin Jun 15, 2019
a839434
Update NuGet-Packages
msallin Nov 14, 2019
e9ef7cf
Make DeleteDatabase in DropCreateDatabaseWhenModelChanges virtual
tomsoftware Nov 14, 2019
04acef3
fix style and typo
tomsoftware Nov 15, 2019
0963736
Remove unused parameter from CloseDatabase method
msallin Nov 16, 2019
68abb4d
Fix typo in comment of SqliteDropCreateDatabaseWhenModelChanges class
msallin Nov 16, 2019
2218045
Set version to 1.5.3
msallin Nov 16, 2019
207e1e4
#143: Add netstandard2.1 support
msallin Nov 14, 2019
6065baf
#143: Add .NET Core 3.1 console project
msallin Nov 14, 2019
52b9b7c
#143: Use Appveyor image "Visual Studio 2019" to build .NET Core 3.1
msallin Nov 14, 2019
4533a9c
#143: Update NuGet packages
msallin Dec 26, 2019
0a2bc9f
#143: Set version to 1.6.0
msallin Nov 17, 2019
702d750
Use scoped NuGet-API-Key
msallin Mar 6, 2020
6b772fe
#143: Add code-based configuration
axelheer Apr 25, 2020
4c5ad2a
#143: Update readme
msallin May 2, 2020
f21bb45
Code cleanup
msallin May 2, 2020
cdd45c9
Update dependencies
Jan 30, 2021
b15864a
Update dependencies
msallin Mar 20, 2021
8edfe36
Update dependencies
msallin Apr 8, 2021
ed11c32
#107: escape columnName to avoid reserved keyword conflict
Kizzzy Apr 23, 2021
732c7a0
Set version to 1.6.2
msallin Apr 23, 2021
58b3371
#163 Add support for defining a default collation
magnusbakken-zetadisplay Apr 29, 2021
b459190
Set version to 1.7.0
msallin May 10, 2021
4cf7bfb
replace expired NuGet API key
msallin May 10, 2021
5825757
Updated README.md with more .NET Core specifics
a-guy-on-the-internet Jul 1, 2021
27c3955
Update README.md
msallin Aug 12, 2021
4579072
Update README.md
msallin Aug 12, 2021
7d59374
Update README.md
msallin Aug 12, 2021
14d91e7
Update dependencies
msallin Aug 12, 2021
a79bda1
Make SQLLiteCodeFirst FIPS compliant
Feb 7, 2024
a01fd39
update dependencies
Feb 23, 2024
78c556b
update ci
Feb 23, 2024
cf9fde2
Migrate to .NET 10, update dependencies, and modernize test tooling
msallin Jun 15, 2026
087cc71
Use NuGet lock files
msallin Jun 15, 2026
c12edce
Replace AppVeyor with GitHub Actions and NuGet trusted publishing
msallin Jun 16, 2026
9799e19
Add Dependabot configuration
msallin Jun 16, 2026
98e02f8
Fix typos in README
msallin Jun 16, 2026
eb35aba
Note .NET 10 support in README
msallin Jun 16, 2026
f7ed6b9
Fix NuGet publish and release steps on Windows runner
msallin Jun 16, 2026
81f12d5
Bump dotnet-sdk from 10.0.300 to 10.0.301
dependabot[bot] Jun 16, 2026
82c1e25
feat: support ON UPDATE CASCADE via CascadeOnUpdate attribute
msallin Jun 16, 2026
6c8e098
feat: expose default collation through the public initializers
msallin Jun 16, 2026
068a19c
fix: scope history record lookup by context key
msallin Jun 16, 2026
c6cae41
fix: preserve connection string values containing equals signs
msallin Jun 16, 2026
b1cafcc
refactor: minor correctness and clarity cleanups
msallin Jun 16, 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
3 changes: 3 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# These are supported funding model platforms

github: msallin # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
36 changes: 36 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Dependabot keeps the .NET SDK (global.json), NuGet packages and GitHub Actions versions up to date.
#
# Minor and patch updates are grouped into a single PR per ecosystem to cut noise; major updates open
# their own PR so the breaking-change surface stays visible. Updates are proposed as PRs and merged
# manually after the CI "Build & Test" check passes.
version: 2
updates:
# Bumps the SDK version pinned in global.json, which setup-dotnet installs in CI. The dotnet-sdk
# ecosystem only does version updates (no security updates) and targets global.json files.
- package-ecosystem: dotnet-sdk
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10

- package-ecosystem: nuget
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
groups:
nuget-minor-and-patch:
update-types:
- minor
- patch

- package-ecosystem: github-actions
directory: "/"
schedule:
interval: weekly
open-pull-requests-limit: 10
groups:
actions-minor-and-patch:
update-types:
- minor
- patch
136 changes: 136 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: CD

# Builds, tests and packs the NuGet package on a version tag (v1.2.3) or manual run.
# Publishing to NuGet uses Trusted Publishing (OIDC) and runs only on a v*.*.* tag push; a manual
# run packs and uploads the artifact as a dry run without publishing (see the step comments below).

on:
push:
tags: [ 'v*.*.*' ]
workflow_dispatch:
inputs:
version:
description: 'Package version, e.g. 1.2.3. Defaults to a dev version when omitted.'
required: false

permissions:
contents: read

jobs:
pack-publish:
name: Pack & Publish
# Windows is required: the library multi-targets net40/net45 and the demo targets net48, which
# need the .NET Framework reference assemblies / targeting packs available on the Windows runners.
runs-on: windows-latest
timeout-minutes: 15
permissions:
id-token: write # Required for NuGet Trusted Publishing; without it NuGet/login fails with 403.
contents: write # Required to create the GitHub Release; a job-level block drops inherited defaults.
steps:
- uses: actions/checkout@v6

- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
# Install the exact SDK pinned in global.json; Dependabot's dotnet-sdk updater keeps it current.
global-json-file: global.json
# Cache the restored NuGet packages, keyed on the committed lock files.
cache: true
cache-dependency-path: '**/packages.lock.json'

- name: Resolve version
id: version
shell: bash
# The manual input is read through an env var, not interpolated into the script, so a crafted
# value cannot inject shell. It is then validated as SemVer before anything downstream uses it.
env:
VERSION_INPUT: ${{ github.event.inputs.version }}
run: |
if [[ "${GITHUB_REF}" == refs/tags/v* ]]; then
VERSION="${GITHUB_REF_NAME#v}"
elif [[ -n "${VERSION_INPUT}" ]]; then
VERSION="${VERSION_INPUT}"
if ! [[ "${VERSION}" =~ ^[0-9]+\.[0-9]+\.[0-9]+([-.][0-9A-Za-z.-]+)?$ ]]; then
echo "Invalid version '${VERSION}'; expected SemVer such as 1.2.3 or 1.2.3-rc.1." >&2
exit 1
fi
else
VERSION="0.0.0-dev.${GITHUB_RUN_NUMBER}"
fi
echo "version=${VERSION}" >> "$GITHUB_OUTPUT"
echo "Resolved package version: ${VERSION}"

- name: Restore
# Locked-mode restore fails the build if any packages.lock.json is missing or out of date, so the
# restore is reproducible and a forgotten lock-file update cannot slip through.
run: dotnet restore SQLite.CodeFirst.slnx --locked-mode

- name: Build
run: dotnet build SQLite.CodeFirst.slnx -c Release --no-restore -p:Version=${{ steps.version.outputs.version }}

- name: Test
# The test project runs on Microsoft.Testing.Platform (opted in via global.json), so target the
# solution with the native MTP dotnet test syntax.
run: dotnet test --solution SQLite.CodeFirst.slnx -c Release --no-build

- name: Pack
run: >
dotnet pack SQLite.CodeFirst/SQLite.CodeFirst.csproj -c Release --no-build
-p:Version=${{ steps.version.outputs.version }}
-o ${{ github.workspace }}/artifacts

- name: Upload package artifact
uses: actions/upload-artifact@v7
with:
name: nuget-package
path: |
${{ github.workspace }}/artifacts/*.nupkg
${{ github.workspace }}/artifacts/*.snupkg

# --- NuGet publishing via Trusted Publishing (OIDC). ---
# No long-lived API key: NuGet/login swaps the GitHub OIDC token for a short-lived key, authorized
# by the trusted publishing policy on nuget.org (the policy must name this workflow file, cd.yml).
# Gated to tag pushes so a manual run stays a dry run and never pushes the 0.0.0-dev.* version.
# https://learn.microsoft.com/nuget/nuget-org/trusted-publishing
- name: NuGet login (OIDC)
id: nuget-login
if: startsWith(github.ref, 'refs/tags/v')
uses: NuGet/login@v1
with:
user: ${{ secrets.NUGET_USER }} # nuget.org account/profile name, NOT the email address.

- name: Publish to NuGet
if: startsWith(github.ref, 'refs/tags/v')
shell: pwsh
# Resolve the package explicitly: on the Windows runner the default PowerShell shell does not
# expand a "*.nupkg" wildcard for dotnet, so a literal glob path is passed through and not found.
# Pushing the .nupkg also pushes the sibling .snupkg symbol package to nuget.org automatically.
run: |
$package = Get-ChildItem -Path "${{ github.workspace }}/artifacts/*.nupkg" | Select-Object -First 1
dotnet nuget push $package.FullName `
--api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}" `
--source https://api.nuget.org/v3/index.json `
--skip-duplicate

# --- GitHub Release. ---
# Created only on tag pushes, after a successful NuGet publish, so the Release reflects what was
# actually shipped. Uses the gh CLI (preinstalled on the runner) rather than a third-party action.
# --generate-notes builds the notes from commits/PRs since the previous tag; --verify-tag guards
# against creating a release for a tag the runner cannot see. The .nupkg/.snupkg are attached so
# the package is downloadable straight from the Release page, not just the workflow run.
- name: Create GitHub Release
if: startsWith(github.ref, 'refs/tags/v')
shell: pwsh
# The tag is passed through an env var rather than interpolated into the script, matching the
# version step above. Assets are resolved with Get-ChildItem so the wildcards expand on the
# Windows runner (bash would mangle the backslashes in the workspace path).
env:
GH_TOKEN: ${{ github.token }}
TAG: ${{ github.ref_name }}
run: |
$assets = Get-ChildItem -Path "${{ github.workspace }}/artifacts/*.nupkg", "${{ github.workspace }}/artifacts/*.snupkg" | ForEach-Object { $_.FullName }
# SemVer pre-release tags carry a hyphen (e.g. v1.2.3-rc.1); mark those as GitHub pre-releases.
$ghArgs = @($env:TAG, '--title', $env:TAG, '--generate-notes', '--verify-tag')
if ($env:TAG -like '*-*') { $ghArgs += '--prerelease' }
$ghArgs += $assets
gh release create $ghArgs
50 changes: 50 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: CI

on:
push:
branches: [ master ]
pull_request:
branches: [ master ]

jobs:
build-test:
name: Build & Test
# Windows is required: the library multi-targets net40/net45 and the demo targets net48, which
# need the .NET Framework reference assemblies / targeting packs available on the Windows runners.
runs-on: windows-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v6

- name: Setup .NET
uses: actions/setup-dotnet@v5
with:
# Install the exact SDK pinned in global.json; Dependabot's dotnet-sdk updater keeps it current.
global-json-file: global.json
# Cache the restored NuGet packages, keyed on the committed lock files.
cache: true
cache-dependency-path: '**/packages.lock.json'

- name: Restore
# Locked-mode restore fails the build if any packages.lock.json is missing or out of date, so the
# restore is reproducible and a forgotten lock-file update cannot slip through.
run: dotnet restore SQLite.CodeFirst.slnx --locked-mode

- name: Build
run: dotnet build SQLite.CodeFirst.slnx -c Release --no-restore

- name: Test
# The test project runs on Microsoft.Testing.Platform (opted in via global.json), so this uses the
# native MTP dotnet test syntax: --solution, and the TRX report flags instead of --logger trx.
run: >
dotnet test --solution SQLite.CodeFirst.slnx -c Release --no-build
--report-trx --report-trx-filename test-results.trx
--results-directory ${{ github.workspace }}/TestResults

- name: Upload test results
if: always()
uses: actions/upload-artifact@v7
with:
name: test-results
path: ${{ github.workspace }}/TestResults/*.trx
if-no-files-found: ignore
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,6 @@ ClientBin/
*~
*.dbmdl
*.dbproj.schemaview
*.pfx
*.publishsettings
node_modules/

Expand Down Expand Up @@ -184,3 +183,4 @@ FakesAssemblies/

# Custom
*.GhostDoc.xml
/.vs/*
6 changes: 3 additions & 3 deletions .nuget/NuGet.Config
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>
Binary file removed .nuget/NuGet.exe
Binary file not shown.
144 changes: 0 additions & 144 deletions .nuget/NuGet.targets

This file was deleted.

Loading