Introducción al trabajo con bases de datos en C#
\n\nEn el desarrollo moderno de aplicaciones, trabajar con bases de datos es una de las habilidades clave. C# (.NET) proporciona potentes herramientas para interactuar tanto con bases de datos relacionales (PostgreSQL) como con bases de datos orientadas a documentos (MongoDB). En este artículo, analizaremos los conceptos básicos de conexión y ejecución de operaciones CRUD para ambos sistemas.
\n\nEl artículo está dirigido a desarrolladores principiantes familiarizados con los fundamentos de C#. Abordaremos tanto el enfoque tradicional mediante consultas SQL (Npgsql) como el ORM moderno — Entity Framework Core, así como el trabajo con MongoDB a través del controlador oficial.
\n\n1. Trabajo con PostgreSQL en C#
\n\nPostgreSQL 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 paquete Npgsql o Entity Framework Core con el proveedor Npgsql.EntityFrameworkCore.PostgreSQL.
1.1 Conexión a través de Npgsql (acceso de bajo nivel)
\n\nInstale el paquete a través de NuGet:
\n\ndotnet add package Npgsql\n\nEjemplo de conexión simple y ejecución de consulta:
\n\nusing Npgsql;\n\nstring connectionString = "Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass";\n\nusing var conn = new NpgsqlConnection(connectionString);\nconn.Open();\n\nstring sql = "SELECT id, name, age FROM users WHERE age > @minAge";\nusing var cmd = new NpgsqlCommand(sql, conn);\ncmd.Parameters.AddWithValue("minAge", 18);\n\nusing var reader = cmd.ExecuteReader();\nwhile (reader.Read())\n{\n Console.WriteLine($"ID: {reader["id"]}, Name: {reader["name"]}, Age: {reader["age"]}");\n}\n\n1.2 Uso de Entity Framework Core con PostgreSQL
\n\nInstale los paquetes:
\n\ndotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Npgsql.EntityFrameworkCore.PostgreSQL\n\nCree el modelo y el contexto:
\n\npublic class User\n{\n public int Id { get; set; }\n public string Name { get; set; }\n public int Age { get; set; }\n}\n\npublic class AppDbContext : DbContext\n{\n public DbSet<User> Users { get; set; }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseNpgsql("Host=localhost;Database=mydb;Username=user;Password=pass");\n }\n}\n\nOperaciones CRUD a través de EF Core:
\n\nusing var db = new AppDbContext();\n\n// Create\ndb.Users.Add(new User { Name = "Ana", Age = 25 });\ndb.SaveChanges();\n\n// Read\nvar users = db.Users.Where(u => u.Age > 20).ToList();\n\n// Update\nvar user = db.Users.First();\nuser.Age = 30;\ndb.SaveChanges();\n\n// Delete\ndb.Users.Remove(user);\ndb.SaveChanges();\n\n2. Trabajo con MongoDB en C#
\n\nMongoDB es una base de datos NoSQL que almacena datos en formato de documentos BSON. Para C# se utiliza el controlador oficial MongoDB.Driver.
2.1 Instalación y configuración de la conexión
\n\nInstale el paquete:
\n\ndotnet add package MongoDB.Driver\n\nConexión al servidor local de MongoDB:
\n\nusing MongoDB.Driver;\n\nvar client = new MongoClient("mongodb://localhost:27017");\nvar database = client.GetDatabase("mydb");\nvar collection = database.GetCollection<BsonDocument>("users");\n\n2.2 Operaciones CRUD con MongoDB
\n\nCree la clase del modelo:
\n\npublic class User\n{\n public MongoDB.Bson.ObjectId Id { get; set; }\n public string Name { get; set; }\n public int Age { get; set; }\n}\n\nEjemplo de trabajo con la colección:
\n\nvar collection = database.GetCollection<User>("users");\n\n// Create\nvar newUser = new User { Name = "Iván", Age = 30 };\ncollection.InsertOne(newUser);\n\n// Read\nvar filter = Builders<User>.Filter.Eq(u => u.Name, "Iván");\nvar user = collection.Find(filter).FirstOrDefault();\n\n// Update\nvar update = Builders&l