DMS.Common.Extensions
2.0.0
dotnet add package DMS.Common.Extensions --version 2.0.0
NuGet\Install-Package DMS.Common.Extensions -Version 2.0.0
<PackageReference Include="DMS.Common.Extensions" Version="2.0.0" />
<PackageVersion Include="DMS.Common.Extensions" Version="2.0.0" />
<PackageReference Include="DMS.Common.Extensions" />
paket add DMS.Common.Extensions --version 2.0.0
#r "nuget: DMS.Common.Extensions, 2.0.0"
#:package DMS.Common.Extensions@2.0.0
#addin nuget:?package=DMS.Common.Extensions&version=2.0.0
#tool nuget:?package=DMS.Common.Extensions&version=2.0.0
DMS.Common.Extensions
Paquete NuGet: DMS.Common.Extensions Autor: Fredy Fuentes Versión Actual: 2.0.0
📜 Descripción
DMS.Common.Extensions
es una librería de alto rendimiento para .NET que simplifica y acelera el trabajo con System.Data
. Proporciona un conjunto de métodos de extensión optimizados para mapear DataTable
y IDataReader
a objetos (POCOs), con soporte para paralelismo inteligente, caché de reflexión y mapeo inverso.
📝 Características Principales
- Mapeo de
IDataReader
a Objetos: Convierte los resultados de tus consultas a listas de objetos de forma ultra-eficiente, procesando los datos fila por fila sin consumir memoria excesiva. - Mapeo de
DataTable
con Paralelismo Inteligente: ConvierteDataTable
a listas usando procesamiento paralelo solo cuando es beneficioso, garantizando el máximo rendimiento para tablas grandes y pequeñas. - Rendimiento Extremo: Utiliza un caché de reflexión para minimizar el overhead y acelerar masivamente las conversiones repetidas.
- Mapeo Inverso: Convierte objetos de vuelta a
DataRow
, ideal para construirDataTable
s para inserciones masivas conSqlBulkCopy
. - API Intuitiva: Métodos de extensión fáciles de usar que se integran fluidamente en tu código ADO.NET.
📖 Ejemplos de Uso
Mapear desde un IDataReader
(Método Recomendado)
using DMS.Common.Extensions;
using System.Data.SqlClient;
// Asume que tienes una conexión a la base de datos
using var connection = new SqlConnection(connectionString);
await connection.OpenAsync();
using var command = new SqlCommand("SELECT ProductId, Name, Price FROM Products", connection);
using IDataReader reader = await command.ExecuteReaderAsync();
// ¡Convierte el stream de datos directamente a una lista de objetos!
List<Product> products = reader.ToList<Product>();
Mapear desde un DataTable
(con Paralelismo Inteligente)
using DMS.Common.Extensions;
DataTable productTable = GetProductsFromLegacySource();
// La librería decidirá si usa paralelismo basado en el número de filas.
// Para mantener el orden original, usa ToListOrdered<T>().
List<Product> products = productTable.ToList<Product>();
Mapeo Inverso (Objeto a DataRow
para Bulk Insert)
using DMS.Common.Extensions;
using System.Data.SqlClient;
// 1. Tienes una lista de nuevos productos
List<Product> newProducts = GetNewProducts();
// 2. Crea un DataTable con la estructura de la tabla de destino
var productTable = new DataTable();
productTable.Columns.Add("Name", typeof(string));
productTable.Columns.Add("Price", typeof(decimal));
// 3. Usa la extensión para llenar el DataTable
foreach (var product in newProducts)
{
productTable.Rows.Add(product.ToDataRow(productTable));
}
// 4. Usa SqlBulkCopy para una inserción masiva y ultra-rápida
using (var bulkCopy = new SqlBulkCopy(connection))
{
bulkCopy.DestinationTableName = "Products";
await bulkCopy.WriteToServerAsync(productTable);
}
🚀 Instalación
dotnet add package DMS.Common.Extensions --version 2.0.0
🛠 Compatibilidad
- .NET 9.0+
📄 Documentación Completa
Clase | Descripción |
---|---|
DataReaderExtension |
Métodos de extensión de alto rendimiento para IDataReader . |
DataTableExtension |
Métodos de extensión para DataTable con paralelismo inteligente. |
DataRowExtension |
Métodos de extensión para mapeo de DataRow a objetos. |
ObjectExtension |
Métodos de extensión para mapeo inverso (objeto a DataRow ). |
DataSetExtension |
Métodos de utilidad para DataSet . |
PropertyInfoExtension |
Métodos de utilidad para PropertyInfo . |
📄 Licencia
Este proyecto se encuentra bajo la licencia Apache-2.0.
📌 Cómo Contribuir
Si deseas contribuir, revisa el archivo CONTRIBUTING.md
para más detalles.
📜 Changelog
Para ver los cambios en cada versión, consulta el archivo CHANGELOG.md
.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net9.0 is compatible. 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. |
-
net9.0
- No dependencies.
NuGet packages (5)
Showing the top 5 NuGet packages that depend on DMS.Common.Extensions:
Package | Downloads |
---|---|
DMS.SqlScriptGenerator
Biblioteca para generar scripts SQL de manera programática. Incluye métodos para construir consultas, manejar transacciones y trabajar con parámetros de manera segura y eficiente. |
|
DMS.Connection.Crm
Biblioteca para conexión segura con CRM. Incluye ejecución de consultas SQL. |
|
DMS.Connection.Adv
Biblioteca para conexión segura con nodos de Advance. Incluye ejecución de consultas SQL, autenticación y gestión dinámica de nodos con cifrado. |
|
DMS.Connection.CrmErp
Biblioteca para conexión segura con CRM-Erp. Incluye ejecución de consultas SQL. |
|
DMS.Connection.Ado
Biblioteca para conexión segura con SQL. Incluye ejecución de consultas SQL. |
GitHub repositories
This package is not used by any popular GitHub repositories.