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
                    
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="DMS.Common.Extensions" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DMS.Common.Extensions" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="DMS.Common.Extensions" />
                    
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 DMS.Common.Extensions --version 2.0.0
                    
#r "nuget: DMS.Common.Extensions, 2.0.0"
                    
#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 DMS.Common.Extensions@2.0.0
                    
#: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=DMS.Common.Extensions&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=DMS.Common.Extensions&version=2.0.0
                    
Install as a Cake Tool

DMS.Common.Extensions

NuGet Version NuGet Downloads

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: Convierte DataTable 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 construir DataTables para inserciones masivas con SqlBulkCopy.
  • 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
2.0.0 132 9/9/2025
1.0.0 251 3/27/2025