Trabajo con bases de datos en C#: PostgreSQL y MongoDB — guía completa para desarrolladores .NET
El desarrollo moderno en C# (.NET) rara vez prescinde de la interacción con bases de datos. Independientemente de si crea una aplicación web, un microservicio o una herramienta de escritorio, la capacidad de conectarse y gestionar datos es una habilidad clave. En este artículo, analizaremos el trabajo con dos sistemas de gestión de bases de datos populares: la relacional PostgreSQL y la orientada a documentos MongoDB. Aprenderá cómo configurar la conexión, realizar operaciones CRUD y evitar errores típicos.
1. Conexión a PostgreSQL desde C# (.NET) usando Npgsql
PostgreSQL es un potente sistema de gestión de bases de datos relacional de código abierto. Para trabajar con él en .NET se utiliza el proveedor Npgsql. Instálelo a través de NuGet:
dotnet add package NpgsqlDespués de la instalación, se crea una conexión mediante la cadena de conexión. Ejemplo:
using Npgsql;
string connectionString = "Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass";
using var conn = new NpgsqlConnection(connectionString);conn.Open();
Console.WriteLine("¡Conexión a PostgreSQL establecida!");Ejecución de consultas SQL: CREATE, INSERT, SELECT
Para ejecutar comandos, use NpgsqlCommand. Veamos la creación de una tabla y la inserción de datos:
using var cmd = new NpgsqlCommand();cmd.Connection = conn;
// Creación de tablacmd.CommandText = @" CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(200) UNIQUE )";cmd.ExecuteNonQuery();
// Inserción de datos con parámetroscmd.CommandText = "INSERT INTO users (name, email) VALUES (@name, @email)";cmd.Parameters.AddWithValue("name", "Iván Petrov");cmd.Parameters.AddWithValue("email", "ivan@example.com");cmd.ExecuteNonQuery();
// Lectura de datoscmd.CommandText = "SELECT id, name, email FROM users";using var reader = cmd.ExecuteReader();while (reader.Read()){ Console.WriteLine($"{reader["id"]}: {reader["name"]} - {reader["email"]}");}Importante: siempre use consultas parametrizadas para protegerse contra inyecciones SQL.
2. Trabajo con PostgreSQL a través de Entity Framework Core
Para un trabajo de más alto nivel, se recomienda Entity Framework Core (EF Core) con el proveedor Npgsql. Instale los paquetes:
dotnet add package Microsoft.EntityFrameworkCoredotnet add package Npgsql.EntityFrameworkCore.PostgreSQLCree el contexto y el modelo:
public class User{ public int Id { get; set; } public string Name { get; set; } public string Email { get; set; }}
public class AppDbContext : DbContext{ public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder options) => options.UseNpgsql("Host=localhost;Database=mydb;Username=user;Password=pass");}
// Usousing var db = new AppDbContext();db.Database.EnsureCreated();
var user = new User { Name = "Ana Smirnova", Email = "anna@example.com" };db.Users.Add(user);db.SaveChanges();
var users = db.Users.ToList();EF Core genera automáticamente SQL, gestiona migraciones y simplifica el mantenimiento del código.
3. Conexión a MongoDB desde C# (.NET) con MongoDB.Driver
MongoDB es una base de datos NoSQL que almacena datos en formato de documentos BSON. Para C#, use el controlador oficial MongoDB.Driver:
dotnet add package MongoDB.DriverConexión a un servidor local:
using MongoDB.Driver;using MongoDB.Bson;
var client = new MongoClient("mongodb://localhost:27017");var database = client.GetDatabase("mydb");var collection = database.GetCollection<