NarayaniInfotec.DataLite
1.1.1.6
dotnet add package NarayaniInfotec.DataLite --version 1.1.1.6
NuGet\Install-Package NarayaniInfotec.DataLite -Version 1.1.1.6
<PackageReference Include="NarayaniInfotec.DataLite" Version="1.1.1.6" />
<PackageVersion Include="NarayaniInfotec.DataLite" Version="1.1.1.6" />
<PackageReference Include="NarayaniInfotec.DataLite" />
paket add NarayaniInfotec.DataLite --version 1.1.1.6
#r "nuget: NarayaniInfotec.DataLite, 1.1.1.6"
#:package NarayaniInfotec.DataLite@1.1.1.6
#addin nuget:?package=NarayaniInfotec.DataLite&version=1.1.1.6
#tool nuget:?package=NarayaniInfotec.DataLite&version=1.1.1.6
DataLite
DataLite is a lightweight, database-agnostic CRUD utility library for .NET. It provides simple Insert, Update, Delete, and Select operations without requiring an ORM or database-specific code.
Designed for:
Web APIs
WinForms / WPF
Console applications
Microservices
Reporting tools
โจ Key Features
Database-agnostic (via DbProviderFactories)
Parameterized SQL (safe from injection)
Minimal configuration
No ORM dependency
Optional logging
Stored procedure support
Transaction support
Suitable for small to medium applications
๐ฆ Installation dotnet add package MyCompany.DataLite
โ๏ธ Basic Configuration var config = new DbConfig { ProviderName = "Microsoft.Data.SqlClient", ConnectionString = "your-connection-string" };
IDatabase database = new Database(config); ICrudRepository crud = new CrudRepository(database);
๐ Table Name Best Practice
Always define table names as constants to avoid SQL injection risks.
public static class DbTables { public const string Members = "Members"; }
โ INSERT crud.Insert( DbTables.Members, new Dictionary<string, object> { { "Name", "Nilesh" }, { "Email", "test@email.com" }, { "CreatedOn", DateTime.UtcNow } });
Notes
Keys = column names
Values = column values
null values are converted to DBNull.Value
โ๏ธ UPDATE crud.Update( DbTables.Members, new Dictionary<string, object> { { "Email", "updated@email.com" }, { "UpdatedOn", DateTime.UtcNow } }, "MemberId = @MemberId", new Dictionary<string, object> { { "@MemberId", 10 } });
Notes
Only provided fields are updated
WHERE clause must be parameterized
โ DELETE crud.Delete( DbTables.Members, "MemberId = @MemberId", new Dictionary<string, object> { { "@MemberId", 10 } });
Notes
Always use a WHERE clause
Prevents accidental mass deletion
๐ SELECT DataTable table = crud.Select( DbTables.Members, columns: "MemberId, Name, Email", whereClause: "IsActive = @IsActive", whereParams: new Dictionary<string, object> { { "@IsActive", true } });
Select All Rows DataTable table = crud.Select(DbTables.Members);
๐งช Stored Procedure Execution var spExecutor = new StoredProcedureExecutor(database);
DataTable result = spExecutor.Execute( "GetActiveMembers", new Dictionary<string, object> { { "@DepartmentId", 2 } });
Insert And Return Identity
int id = db.InsertAndReturnId(
"Datasets",
new Dictionary<string, object>
{
["DatasetName"] = "Finance Report",
["Year"] = 2025,
["Department"] = "Accounts"
}
);
๐ Transaction Support
using var scope = new DbTransactionScope(database);
crud.Insert(DbTables.Orders, orderFields);
crud.Insert(DbTables.OrderItems, itemFields);
scope.Commit();
๐งพ Logging (Optional)
Implement IDbLogger to trace SQL execution:
public class ConsoleDbLogger : IDbLogger
{
public void Log(string sql, Dictionary<string, object> parameters)
{
Console.WriteLine(sql);
}
}
Pass it to CrudRepository if required.
๐ Security Notes
Table names must come from trusted code (constants)
Values are always parameterized
Avoid passing raw user input as identifiers
๐ง When to Use DataLite
โ Simple CRUD needs
โ Reporting systems
โ Legacy databases
โ Lightweight services
โ Complex domain modeling
โ Heavy object tracking
โ LINQ-based querying
๐ License
MIT License
๐ Roadmap
Async CRUD methods
Pagination helpers
Insert-and-return-id support
Soft delete utilities
๐ค Contribution
Contributions, issues, and suggestions are welcome.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- Microsoft.Data.SqlClient (>= 6.1.3)
- System.ComponentModel.Annotations (>= 5.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
- Added support for asynchronous database operations in CRUD methods.
- Added support for asynchronous execution of stored procedures.
- Added XML documentation comments for public API surface to remove missing XML comment warnings and improve IntelliSense:
- StoredProcedures/SpParam.cs โ documented Name, Value and constructor.
- CRUD/ICrudRepository.cs โ documented Execute, ExecuteAsync, Query, QueryAsync, InsertAndReturnId, SelectList/SelectListAsync, QueryList/QueryListAsync and related parameters/return values.
- Extensions/DataTableExtensions.cs โ documented class and ToList extension method.
- Verified solution builds successfully after changes.