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
IDataReadera 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
DataTablecon Paralelismo Inteligente: ConvierteDataTablea 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 construirDataTables 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.