pengdows.crud 1.0.1751541717

There is a newer version of this package available.
See the version list below for details.
dotnet add package pengdows.crud --version 1.0.1751541717
                    
NuGet\Install-Package pengdows.crud -Version 1.0.1751541717
                    
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="pengdows.crud" Version="1.0.1751541717" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="pengdows.crud" Version="1.0.1751541717" />
                    
Directory.Packages.props
<PackageReference Include="pengdows.crud" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add pengdows.crud --version 1.0.1751541717
                    
#r "nuget: pengdows.crud, 1.0.1751541717"
                    
#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.
#:package pengdows.crud@1.0.1751541717
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=pengdows.crud&version=1.0.1751541717
                    
Install as a Cake Addin
#tool nuget:?package=pengdows.crud&version=1.0.1751541717
                    
Install as a Cake Tool

pengdows.crud

pengdows.crud is a SQL-first, strongly-typed, testable data access layer for .NET. It’s built for developers who want full control over SQL, predictable behavior across databases, and no ORM magic.

No LINQ. No tracking. No surprises.


πŸ” Why pengdows.crud?

  • Built by a dev who actually writes SQL, understands ACID, and doesn’t want ORMs rewriting queries behind their back.
  • Works across databases using consistent, standards-compliant behavior.
  • Handles parameterization, enums, JSON, audit fields, and transactionsβ€”out of the box.
  • Offers full dependency injection, fine-grained connection control, and true multi-tenancy.

βœ… Key Features

  • EntityHelper<TEntity, TRowID>: automatic CRUD with custom SQL injection points.
  • Full support for:
    • Enums
    • JSON
    • GUIDs
    • UTC timestamps
  • Built-in audit tracking per entity and per field.
  • Safe SQL generation with strict parameterization (@, :, or ? depending on provider).
  • Connection lifecycle modes: New, Shared, KeepAlive.
  • Scoped transactions via TransactionContext.
  • Works cleanly with DI and ADO.NETβ€”no leaky abstractions.

🧩 Supported Databases

Tested and tuned for:

  • SQL Server / Express / LocalDB
  • PostgreSQL / TimescaleDB
  • Oracle
  • MySQL / MariaDB
  • SQLite
  • Firebird
  • CockroachDB

All tested against .NET 8 with native ADO.NET providers. Must support DbProviderFactory and GetSchema("DataSourceInformation").


❌ Not Supported

Due to missing or outdated .NET providers:

  • TimesTen
  • DB2
  • Informix
  • Sybase ASE
  • SQL Anywhere

Want support? Ask the vendor to ship a real ADO.NET provider.


🚫 Not an ORM β€” On Purpose

pengdows.crud doesn't:

  • Track entities
  • Auto-generate complex queries
  • Obfuscate SQL

Instead, it helps you write real SQL that's:

  • Predictable
  • Testable
  • Secure

🧠 Philosophy

  • Primary keys β‰  pseudokeys
  • Open late, close early β€” manage connections responsibly
  • Parameterize everything β€” always
  • Audit everything β€” store in UTC
  • Don't assume β€” use provider metadata (DbProviderFactory, GetSchema)
  • Test in production-like environments β€” not theory

πŸ”¬ Tool Comparison

Feature pengdows.crud Raw ADO.NET Dapper EF Core NHibernate
Provider-Agnostic SQL βœ… ⚠️ Manual ⚠️ ⚠️ ⚠️
Safe Parameterization βœ… ❌ Risky ⚠️ βœ… βœ…
Audit Field Support βœ… Built-in ❌ ❌ ⚠️ ⚠️
Change Tracking ❌ Explicit ❌ ❌ βœ… βœ…
LINQ ❌ ❌ ❌ βœ… ⚠️
Strong Typing βœ… ⚠️ Manual ⚠️ βœ… βœ…
Multi-tenancy βœ… Opt-in ❌ ❌ ⚠️ ⚠️
Async/Await Support βœ… Fully ⚠️ Provider βœ… βœ… ⚠️
Transaction Scoping βœ… Layered ❌ ❌ βœ… βœ…
Testability βœ… Interfaces ❌ ⚠️ ⚠️ ⚠️
Migration Tooling ❌ By Design ❌ ❌ βœ… βœ…

πŸ“š Documentation

Topics include:

  • EntityHelper<TEntity, TRowID>
  • SqlContainer
  • DbMode and connection management
  • Audit and UTC logging
  • Transaction scopes
  • Type coercion and mapping
  • Primary vs. pseudokeys
  • Extending core helpers

πŸ› οΈ Getting Started

dotnet add package pengdows.crud
using System.Data.SqlClient;
using pengdows.crud;

var db = new DatabaseContext("your-connection-string", SqlClientFactory.Instance);
var helper = new EntityHelper<MyEntity, long>(db);
Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  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.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
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
1.0.1753961768 0 7/31/2025
1.0.1753226590 487 7/22/2025
1.0.1753131093 432 7/21/2025
1.0.1753123740 427 7/21/2025
1.0.1752539642 129 7/15/2025
1.0.1752508990 137 7/14/2025
1.0.1752431736 127 7/13/2025
1.0.1752421362 126 7/13/2025
1.0.1752412981 128 7/13/2025
1.0.1752406306 90 7/13/2025
1.0.1752274271 61 7/11/2025
1.0.1752241158 93 7/11/2025
1.0.1752144606 131 7/10/2025
1.0.1752014492 137 7/8/2025
1.0.1752007870 133 7/8/2025
1.0.1751844348 132 7/6/2025
1.0.1751581002 131 7/3/2025
1.0.1751559974 138 7/3/2025
1.0.1751557446 136 7/3/2025
1.0.1751545735 137 7/3/2025
1.0.1751545456 134 7/3/2025
1.0.1751541717 127 7/3/2025
1.0.1751541139 132 7/3/2025
1.0.1751369629 133 7/1/2025
1.0.1750872390 133 6/25/2025
1.0.1750787107 137 6/24/2025
1.0.1750786657 141 6/24/2025
1.0.1750785824 135 6/24/2025
1.0.1750719855 133 6/23/2025
1.0.1744725713 204 4/15/2025
1.0.1744631557 193 4/14/2025
1.0.1744033596 237 4/7/2025
1.0.1743862891 92 4/5/2025
1.0.1743392866 158 3/31/2025
1.0.1743388577 160 3/31/2025
1.0.0 139 6/23/2025
0.9.5515 2,444 2/6/2015
0.9.5349.19802 1,750 8/24/2014