La conectividad con bases de datos es un aspecto crítico en el desarrollo de aplicaciones modernas. SQL Server, un sistema de gestión de bases de datos relacional de Microsoft, es una opción popular para almacenar y administrar datos en una amplia gama de aplicaciones. En el ecosistema de desarrollo de Microsoft, .NET Core con C# es una combinación poderosa y ampliamente utilizada para crear aplicaciones, y la capacidad de conectarse a SQL Server de manera eficiente es fundamental. En este artículo, exploraremos las diferentes formas de establecer conexiones desde .NET Core a SQL Server utilizando C#.
1. ADO.NET
ADO.NET es una tecnología de acceso a datos de Microsoft que proporciona acceso programático a fuentes de datos relacionales, incluido SQL Server. Es una de las formas más antiguas y confiables de conectarse a SQL Server desde .NET Core. A través de ADO.NET, los desarrolladores pueden utilizar objetos como SqlConnection, SqlCommand y SqlDataReader para interactuar con la base de datos. Aunque es potente y flexible, el código puede resultar extenso y propenso a errores debido a la manipulación manual de conexiones y comandos.
using System;
using System.Data.SqlClient;
class Program
{
static void Main()
{
string connectionString = "Data Source=MiServidor;Initial Catalog=MiBaseDeDatos;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
string query = "SELECT * FROM MiTabla";
SqlCommand command = new SqlCommand(query, connection);
connection.Open();
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
Console.WriteLine(reader.GetString(0));
}
reader.Close();
}
}
}
2. Entity Framework Core
Entity Framework Core (EF Core) es un ORM (Object-Relational Mapper) de Microsoft que simplifica el acceso y la manipulación de datos en aplicaciones .NET Core. Proporciona una capa de abstracción sobre la base de datos y permite a los desarrolladores interactuar con los objetos del dominio en lugar de escribir consultas SQL directamente. EF Core es altamente productivo y reduce la cantidad de código necesario para administrar la conectividad con SQL Server.
using System;
using Microsoft.EntityFrameworkCore;
class MyDbContext : DbContext
{
public DbSet<MyEntity> MyEntities { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options)
=> options.UseSqlServer("Data Source=MiServidor;Initial Catalog=MiBaseDeDatos;Integrated Security=True");
}
class MyEntity
{
public int Id { get; set; }
public string Name { get; set; }
}
class Program
{
static void Main()
{
using (var context = new MyDbContext())
{
var entities = context.MyEntities.ToList();
foreach (var entity in entities)
{
Console.WriteLine(entity.Name);
}
}
}
}
3. Dapper
Dapper es una biblioteca de mapeo de objetos a bases de datos en .NET. Proporciona métodos de extensión simples para ejecutar consultas SQL y mapear los resultados a objetos .NET. Dapper es conocido por su rendimiento y simplicidad, lo que lo convierte en una opción popular para aquellos que prefieren el control sobre las consultas SQL pero aún desean un poco de abstracción.
using System;
using System.Data.SqlClient;
using Dapper;
class Program
{
static void Main()
{
string connectionString = "Data Source=MiServidor;Initial Catalog=MiBaseDeDatos;Integrated Security=True";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
string query = "SELECT * FROM MiTabla";
var results = connection.Query<MyEntity>(query);
foreach (var result in results)
{
Console.WriteLine(result.Name);
}
}
}
}
En resumen, .NET Core ofrece múltiples formas de conectarse a SQL Server utilizando C#. La elección de la tecnología adecuada depende de varios factores, como los requisitos de rendimiento, la complejidad del modelo de datos y las preferencias personales del desarrollador. Ya sea a través de ADO.NET para un control completo, Entity Framework Core para una mayor productividad o Dapper para un rendimiento optimizado, cada enfoque tiene sus propias ventajas y desventajas. Al comprender estas diferentes opciones, los desarrolladores pueden seleccionar la solución más adecuada para sus proyectos y maximizar la eficiencia en el desarrollo de aplicaciones basadas en .NET Core con SQL Server.