Introdução ao trabalho com bancos de dados em C#
\n\nNo desenvolvimento moderno de aplicações, trabalhar com bancos de dados é uma das habilidades essenciais. O C# (.NET) oferece ferramentas poderosas para interagir tanto com bancos de dados relacionais (PostgreSQL) quanto com bancos orientados a documentos (MongoDB). Neste artigo, abordaremos os fundamentos da conexão e execução de operações CRUD para ambos os sistemas.
\n\nO artigo é destinado a desenvolvedores iniciantes familiarizados com os fundamentos do C#. Veremos tanto a abordagem tradicional com consultas SQL (Npgsql) quanto o ORM moderno — Entity Framework Core, além do trabalho com MongoDB através do driver oficial.
\n\n1. Trabalho com PostgreSQL em C#
\n\nPostgreSQL é um poderoso SGBD relacional de código aberto. Para trabalhar com ele no .NET, utiliza-se o pacote Npgsql ou o Entity Framework Core com o provedor Npgsql.EntityFrameworkCore.PostgreSQL.
1.1 Conexão via Npgsql (acesso de baixo nível)
\n\nInstale o pacote via NuGet:
\n\ndotnet add package Npgsql\n\nExemplo de conexão simples e execução 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 do Entity Framework Core com PostgreSQL
\n\nInstale os pacotes:
\n\ndotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Npgsql.EntityFrameworkCore.PostgreSQL\n\nCrie o modelo e o 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\nOperações CRUD via 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. Trabalho com MongoDB em C#
\n\nMongoDB é um banco de dados NoSQL que armazena dados no formato de documentos BSON. Para C#, utiliza-se o driver oficial MongoDB.Driver.
2.1 Instalação e configuração da conexão
\n\nInstale o pacote:
\n\ndotnet add package MongoDB.Driver\n\nConexão ao servidor MongoDB local:
\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 Operações CRUD com MongoDB
\n\nCrie a classe 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\nExemplo de trabalho com a coleção:
\n\nvar collection = database.GetCollection<User>("users");\n\n// Create\nvar newUser = new User { Name = "João", Age = 30 };\ncollection.InsertOne(newUser);\n\n// Read\nvar filter = Builders<User>.Filter.Eq(u => u.Name, "João");\nvar user = collection.Find(filter).FirstOrDefault();\n\n// Update\nvar update = Builders&l