Trabajo con bases de datos en C#: PostgreSQL y MongoDB

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course
```html

Introducción: ¿por qué un desarrollador de C# debería conocer PostgreSQL y MongoDB?

El desarrollo moderno en C# (.NET) rara vez prescinde del trabajo con bases de datos. La elección entre un sistema de gestión de bases de datos relacional (SQL) y uno orientado a documentos (NoSQL) depende de la arquitectura del proyecto. PostgreSQL es una potente base relacional con soporte para JSON, mientras que MongoDB es una base documental flexible para prototipos rápidos y Big Data. En este artículo, analizaremos la conexión y las operaciones básicas con ambos sistemas desde C#.

1. Trabajo con PostgreSQL en C#

Para la interacción con PostgreSQL en .NET se utiliza el proveedor Npgsql. Este soporta Entity Framework Core y la ejecución directa de consultas SQL.

1.1. Instalación y conexión

Instale el paquete NuGet:

dotnet add package Npgsql

Ejemplo de cadena de conexión:

Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass

1.2. Operaciones CRUD mediante Npgsql

Creemos la tabla Users y realicemos operaciones básicas:

using Npgsql;

var connString = "Host=localhost;Database=testdb;Username=postgres;Password=123";
await using var conn = new NpgsqlConnection(connString);
await conn.OpenAsync();

// Creación de tabla
var createCmd = new NpgsqlCommand(@"
    CREATE TABLE IF NOT EXISTS Users (
        Id SERIAL PRIMARY KEY,
        Name VARCHAR(100),
        Age INT
    )", conn);
await createCmd.ExecuteNonQueryAsync();

// Inserción de datos
var insertCmd = new NpgsqlCommand(
    "INSERT INTO Users (Name, Age) VALUES (@n, @a)", conn);
insertCmd.Parameters.AddWithValue("n", "Алексей");
insertCmd.Parameters.AddWithValue("a", 30);
await insertCmd.ExecuteNonQueryAsync();

// Lectura de datos
var readCmd = new NpgsqlCommand("SELECT * FROM Users", conn);
var reader = await readCmd.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
    Console.WriteLine($"{reader["Id"]}: {reader["Name"]}, {reader["Age"]} años");
}

1.3. Uso de Entity Framework Core

Instale el paquete:

dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL

Defina el modelo y el contexto:

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

public class AppDbContext : DbContext
{
    public DbSet<User> Users { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseNpgsql("Host=localhost;Database=testdb;Username=postgres;Password=123");
}

CRUD mediante EF Core:

using var db = new AppDbContext();

// Adición
db.Users.Add(new User { Name = "Мария", Age = 25 });
await db.SaveChangesAsync();

// Lectura
var users = await db.Users.ToListAsync();
foreach (var u in users)
    Console.WriteLine($"{u.Name} - {u.Age}");

// Actualización
var user = await db.Users.FirstAsync(u => u.Name == "Мария");
user.Age = 26;
await db.SaveChangesAsync();

// Eliminación
db.Users.Remove(user);
await db.SaveChangesAsync();

2. Trabajo con MongoDB en C#

MongoDB almacena datos en formato BSON (JSON binario). Para C# se utiliza el driver MongoDB.Driver.

2.1. Instalación y conexión

Instale el paquete NuGet:

dotnet add package MongoDB.Driver

Conexión a un servidor local:

var client = new MongoClient("mongodb://localhost:27017");
var database = client.GetDatabase("testdb");
var collection = database.GetCollection<BsonDocument>("users");

2.2. Operaciones CRUD

Trabajo con documentos mediante BsonDocument:

// Creación de documento
var doc = new BsonDocument
{
    { "name", "Иван" },
    { "age", 28 },
    { "skills", new BsonArray { "C#", "MongoDB", "Docker" } }
};
await collection.Insert
```

Blogs

Book Recommendations