Trabalho com bancos de dados em C#: PostgreSQL e MongoDB — guia completo para desenvolvedores .NET
O desenvolvimento moderno em C# (.NET) raramente ocorre sem interação com bancos de dados. Independentemente de você estar criando uma aplicação web, um microsserviço ou uma ferramenta desktop, a habilidade de conectar e gerenciar dados é uma competência essencial. Neste artigo, abordaremos o trabalho com dois sistemas populares de gerenciamento de bancos de dados: o relacional PostgreSQL e o orientado a documentos MongoDB. Você aprenderá como configurar a conexão, executar operações CRUD e evitar erros comuns.
1. Conexão com PostgreSQL a partir de C# (.NET) usando Npgsql
PostgreSQL é um poderoso SGBD relacional de código aberto. Para trabalhar com ele em .NET, utiliza-se o provedor Npgsql. Instale-o via NuGet:
dotnet add package NpgsqlApós a instalação, cria-se uma conexão através de uma string de conexão. Exemplo:
using Npgsql;
string connectionString = "Host=localhost;Port=5432;Database=mydb;Username=user;Password=pass";
using var conn = new NpgsqlConnection(connectionString);conn.Open();
Console.WriteLine("Conexão com PostgreSQL estabelecida!");Execução de consultas SQL: CREATE, INSERT, SELECT
Para executar comandos, use NpgsqlCommand. Vejamos a criação de uma tabela e a inserção de dados:
using var cmd = new NpgsqlCommand();cmd.Connection = conn;
// Criação da tabelacmd.CommandText = @" CREATE TABLE IF NOT EXISTS users ( id SERIAL PRIMARY KEY, name VARCHAR(100), email VARCHAR(200) UNIQUE )";cmd.ExecuteNonQuery();
// Inserção de dados com parâmetroscmd.CommandText = "INSERT INTO users (name, email) VALUES (@name, @email)";cmd.Parameters.AddWithValue("name", "Ivan Petrov");cmd.Parameters.AddWithValue("email", "ivan@example.com");cmd.ExecuteNonQuery();
// Leitura de dadoscmd.CommandText = "SELECT id, name, email FROM users";using var reader = cmd.ExecuteReader();while (reader.Read()){ Console.WriteLine($"{reader["id"]}: {reader["name"]} - {reader["email"]}");}Importante: sempre use consultas parametrizadas para proteção contra injeção de SQL.
2. Trabalho com PostgreSQL via Entity Framework Core
Para um trabalho de nível mais alto, recomenda-se o Entity Framework Core (EF Core) com o provedor Npgsql. Instale os pacotes:
dotnet add package Microsoft.EntityFrameworkCoredotnet add package Npgsql.EntityFrameworkCore.PostgreSQLCrie o contexto e o 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 = "Anna Smirnova", Email = "anna@example.com" };db.Users.Add(user);db.SaveChanges();
var users = db.Users.ToList();O EF Core gera automaticamente o SQL, gerencia migrações e simplifica a manutenção do código.
3. Conexão com MongoDB a partir de C# (.NET) usando MongoDB.Driver
MongoDB é um banco de dados NoSQL que armazena dados no formato de documentos BSON. Para C#, use o driver oficial MongoDB.Driver:
dotnet add package MongoDB.DriverConexão com o servidor local:
using MongoDB.Driver;using MongoDB.Bson;
var client = new MongoClient("mongodb://localhost:27017");var database = client.GetDatabase("mydb");var collection = database.GetCollection<