VTNET.Vitado
2.0.7
See the version list below for details.
dotnet add package VTNET.Vitado --version 2.0.7
NuGet\Install-Package VTNET.Vitado -Version 2.0.7
<PackageReference Include="VTNET.Vitado" Version="2.0.7" />
paket add VTNET.Vitado --version 2.0.7
#r "nuget: VTNET.Vitado, 2.0.7"
// Install VTNET.Vitado as a Cake Addin #addin nuget:?package=VTNET.Vitado&version=2.0.7 // Install VTNET.Vitado as a Cake Tool #tool nuget:?package=VTNET.Vitado&version=2.0.7
ADO.NET Wrapper Library
Introduction
This library is designed to simplify ADO.NET interactions by wrapping around ADO.NET and using the SqlDataReader class to read data. It provides a set of methods for executing queries and stored procedures and mapping the results to objects, making database interactions in your .NET applications more straightforward and efficient.
Commands
The library offers a variety of commands to execute and interact with your database:
Query
Query
: Execute a query and return the number of affected rows.Query<T>
: Execute a query and return a list of mapped data.QueryAsync
: Asynchronously execute a query and return the number of affected rows.QueryAsync<T>
: Asynchronously execute a query and return a list of mapped data.QueryTable
: Execute a query and return the result as a DataTable.QueryTableAsync
: Asynchronously execute a query and return the result as a DataTable.QueryFirst<T>
: Execute a query and return the first row as a mapped object.QueryFirstAsync<T>
: Asynchronously execute a query and return the first row as a mapped object.QueryOne<T>
: Execute a query and return the first cell of the first row as a mapped object.QueryOneAsync<T>
: Asynchronously execute a query and return the first cell of the first row as a mapped object.
Stored Procedure
Stored
: Execute a stored procedure and return the number of affected rows.Stored<T>
: Execute a stored procedure and return a list of mapped data.StoredAsync
: Asynchronously execute a stored procedure and return the number of affected rows.StoredAsync<T>
: Asynchronously execute a stored procedure and return a list of mapped data.StoredTable
: Execute a stored procedure and return the result as a DataTable.StoredTableAsync
: Asynchronously execute a stored procedure and return the result as a DataTable.StoredFirst<T>
: Execute a stored procedure and return the first row as a mapped object.StoredFirstAsync<T>
: Asynchronously execute a stored procedure and return the first row as a mapped object.StoredOne<T>
: Execute a stored procedure and return the first cell of the first row as a mapped object.StoredOneAsync<T>
: Asynchronously execute a stored procedure and return the first cell of the first row as a mapped object.
Integration with ASP/Blazor
You can easily integrate this library into your ASP.NET or Blazor applications. To get started, add the following code to your Startup.cs or Program.cs:
The Motivation
The genesis of this library stems from the challenges encountered during a project that required database-first development. The project demanded dealing with complex database requirements, such as seamlessly adapting to changes like renaming parameters in stored procedures without necessitating corresponding modifications in C# code, handling table alterations like adding or removing columns without affecting the C# Insert and Update logic, and more. In essence, the project's data structure was highly dynamic and prone to alterations.
While searching for existing libraries to address these unique demands, it became evident that finding a suitable solution was a daunting task (or my search skills were not up to the challenge! 🤣) Consequently. I embarked on the journey to develop this library to cater to the project's specific needs and ensure a smoother development process. 👌
builder.Services.AddVitado("Data Source=.;Initial Catalog=...;MultipleActiveResultSets=True;User Id=...;Password=...");
Make sure to replace the connection string with your specific database details.
How to Use
Query
Here are examples of how to use the library for querying:
// Query and map data
List<DBOrderTable> fbBanLeTam = await db.QueryAsync<DBOrderTable>("SELECT * FROM [dbo].[FB_BANLE_TAM]");
DBOrderTable fbBanLeTam = await db.QueryFirstAsync<DBOrderTable>("SELECT TOP 1 * FROM [dbo].[FB_BANLE_TAM]");
string name = await db.QueryOneAsync<string>("SELECT TOP 1 * FROM [dbo].[FB_BANLE_TAM]");
// Parameters
var inforUser = await db.QueryFirstAsync<DB_SYS_USER>(
query: "SELECT [UserName], [FullName], [Email], [PassWD], [UID], [Is_Employee], [Manv], [Must_Chg_Pwd] FROM [ERP_SOFTZ].[dbo].[SYS_USER] WHERE UID = @UID",
paramsIn: new(("@UID", 241))
);
Stored Procedure
For using stored procedures, follow these examples:
// Query and map data
List<DBOrderTable> fbBanLeTam = await db.StoredAsync<DBOrderTable>("[dbo].[SYS_ReportParams]");
DBOrderTable fbBanLeTam = await db.StoredFirstAsync<DBOrderTable>("[dbo].[SYS_ReportParams]");
// Parameters
var inforUser = await db.QueryFirstAsync<DB_SYS_USER>(
stored: "[dbo].[SYS_ReportParams]",
paramsIn: new(("@UID", 241))
);
// Parameters with Output
var dataStored1 = db.StoredTable("[dbo].[SYS_ReportParams]", new(("@UID", 241), ("CODE", "NV1001")), new(("@Name", ""), ("@TestOutParams", 0)));
Get Parameters Of Stored Procedure And Mapping Type
var vitParams = db.StoredParams("[dbo].[SYS_ReportParams]");
foreach (var item in vitParams)
{
var type = item.Type.GetTypeMap(); // mapping SqlDbType to Type
var defaultValue = type.GetDefaultValue(); // get default value of type
Console.WriteLine($"Type:{type}, ValueDefault:{defaultValue}");
}
Solutions For DynamicData
// Execute stored procedures without regard to parameters
var dataStored = db.StoredTable("[dbo].[Login]", new("Username","Password", true));
// Execute stored procedures without regard to parameters but with paramsout
var vitParamsAuto = db.StoredParams("[dbo].[SYS_ReportParams]").ToVitParamsAuto();
var dataStored1 = db.StoredTable("[dbo].[SYS_ReportParams]", vitParamsAuto.Item1, vitParamsAuto.Item2);
// Insert and update
var dataTable = await db.QueryTableAsync("select * from [dbo].[Customers]");
var vitG = new VitTrack("Customers", dataTable.Rows[0]);
vitG.Row["Name"] = "insert name";
var insert = vitG.Insert();
db.Execute(insert);
vitG.Row["Email"] = "update@email.com";
var update = vitG.Update(conditionColumn:"Name");
db.Execute(update);
You can now seamlessly work with your database using this ADO.NET wrapper library, saving time and effort in your .NET applications.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. 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. |
-
net7.0
- Microsoft.Extensions.Configuration (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection (>= 8.0.0)
- System.Data.SqlClient (>= 4.8.5)
- VTNET.Extensions (>= 2.0.2)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on VTNET.Vitado:
Package | Downloads |
---|---|
VTNET.Vitado.SqlServer
An SqlServer wrapper library |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated | |
---|---|---|---|
7.2.0 | 130 | 8/9/2024 | |
7.2.0-beta.17 | 69 | 7/25/2024 | |
7.2.0-beta.16 | 44 | 7/24/2024 | |
7.2.0-beta.15 | 70 | 7/21/2024 | |
7.2.0-beta.14 | 64 | 7/16/2024 | |
7.2.0-beta.13 | 47 | 7/16/2024 | |
7.2.0-beta.12 | 53 | 7/16/2024 | |
7.2.0-beta.11 | 49 | 7/16/2024 | |
7.2.0-beta.10 | 52 | 7/15/2024 | |
7.2.0-beta.9 | 46 | 7/15/2024 | |
7.2.0-beta.8.1 | 57 | 7/15/2024 | |
7.2.0-beta.8 | 49 | 7/15/2024 | |
7.2.0-beta.7 | 49 | 7/15/2024 | |
7.2.0-beta.6 | 54 | 7/15/2024 | |
7.2.0-beta.5 | 47 | 7/14/2024 | |
7.2.0-beta.4 | 58 | 7/3/2024 | |
7.2.0-beta.3 | 54 | 7/1/2024 | |
7.2.0-beta.2 | 70 | 6/27/2024 | |
7.2.0-beta.1 | 47 | 6/26/2024 | |
7.1.0 | 109 | 5/7/2024 | |
7.0.2 | 154 | 2/28/2024 | |
7.0.1 | 171 | 2/21/2024 | |
7.0.0 | 134 | 2/21/2024 | |
2.0.10 | 124 | 1/19/2024 | |
2.0.9 | 130 | 1/18/2024 | |
2.0.8 | 146 | 1/15/2024 | |
2.0.7 | 192 | 11/27/2023 | |
2.0.6 | 147 | 11/3/2023 | |
2.0.5 | 154 | 10/27/2023 | |
2.0.4 | 140 | 10/27/2023 | |
2.0.3 | 145 | 10/27/2023 | |
2.0.2 | 145 | 10/27/2023 | |
2.0.1 | 175 | 10/25/2023 | |
2.0.0 | 166 | 10/12/2023 | |
1.1.3 | 176 | 9/27/2023 | |
1.1.2 | 149 | 9/20/2023 | |
1.1.1 | 168 | 9/13/2023 | |
1.1.0 | 175 | 9/13/2023 | |
1.0.15 | 172 | 9/12/2023 | |
1.0.14 | 176 | 9/12/2023 | |
1.0.13 | 177 | 9/8/2023 | |
1.0.12 | 180 | 8/25/2023 | |
1.0.11 | 173 | 8/11/2023 | |
1.0.10 | 184 | 8/10/2023 | |
1.0.9 | 171 | 8/9/2023 | |
1.0.8 | 173 | 8/9/2023 | |
1.0.7 | 172 | 8/9/2023 | |
1.0.6 | 185 | 8/4/2023 | |
1.0.5 | 183 | 8/3/2023 | |
1.0.4 | 178 | 8/3/2023 | |
1.0.3 | 178 | 8/3/2023 | |
1.0.2 | 173 | 8/3/2023 | |
1.0.1 | 182 | 8/2/2023 | |
1.0.0 | 183 | 8/2/2023 |