C# | Using Entity Framework with PostgreSQL Database

Hassan BOLAJRAF - Jul 23 - - Dev Community
Note
You can check other posts on my personal website: https://hbolajraf.net

Using Entity Framework with PostgreSQL Database in C

In this guide, we will explore how to use C# Entity Framework Core to interact with a PostgreSQL database. Entity Framework Core is a powerful Object-Relational Mapping (ORM) framework that simplifies database operations in C# applications. PostgreSQL is a robust, open-source relational database management system.

Prerequisites

  • Basic knowledge of C# programming.
  • Visual Studio or Visual Studio Code.
  • .NET Core SDK installed.
  • PostgreSQL Database Server installed and running.

Setup

Install Required Packages

To use Entity Framework Core with PostgreSQL, you need to install the following NuGet packages:

  • Microsoft.EntityFrameworkCore
  • Npgsql.EntityFrameworkCore.PostgreSQL

You can install them using the NuGet Package Manager or the .csproj file.

Database Connection String

Make sure to configure a connection string to your PostgreSQL database in your application's configuration. The connection string typically looks like this:

Server=myserver;Port=myport;Database=mydatabase;User Id=hbolajraf;Password=azerty_:=);
Enter fullscreen mode Exit fullscreen mode

Creating a Model

A model represents a database table. Create a C# class for your model, and annotate it with the [Key] attribute for the primary key and other attributes to define the table structure.

public class Product
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
}
Enter fullscreen mode Exit fullscreen mode

Database Context

A database context represents a session with the database. Create a database context class that derives from DbContext and includes a DbSet for each model.

public class AppDbContext : DbContext
{
    public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { }

    public DbSet<Product> Products { get; set; }
}
Enter fullscreen mode Exit fullscreen mode

Migration

Entity Framework Core uses migrations to create and update the database schema. Run the following commands to create and apply migrations:

dotnet ef migrations add InitialCreate
dotnet ef database update
Enter fullscreen mode Exit fullscreen mode

This will create the database schema based on your model.

CRUD Operations

You can now perform CRUD (Create, Read, Update, Delete) operations on your database using Entity Framework Core. Here are some examples:

  • Create:
using (var context = new AppDbContext())
{
    var newProduct = new Product { Name = "Tonic Bimo", Price = 10.99 };
    context.Products.Add(newProduct);
    context.SaveChanges();
}
Enter fullscreen mode Exit fullscreen mode
  • Read:
using (var context = new AppDbContext())
{
    var products = context.Products.ToList();
}
Enter fullscreen mode Exit fullscreen mode
  • Update:
using (var context = new AppDbContext())
{
    var product = context.Products.Find(1);
    if (product != null)
    {
        product.Price = 20.99;
        context.SaveChanges();
    }
}
Enter fullscreen mode Exit fullscreen mode
  • Delete:
using (var context = new AppDbContext())
{
    var product = context.Products.Find(1);
    if (product != null)
    {
        context.Products.Remove(product);
        context.SaveChanges();
    }
}
Enter fullscreen mode Exit fullscreen mode

Querying the Database

Entity Framework Core provides a powerful query API. You can use LINQ queries to retrieve data from the database.

using (var context = new AppDbContext())
{
    var expensiveProducts = context.Products
        .Where(p => p.Price > 20)
        .ToList();
}
Enter fullscreen mode Exit fullscreen mode

You can write complex queries and join multiple tables using LINQ.

What Next?

Entity Framework Core simplifies working with a PostgreSQL database in C# applications. With the steps outlined in this guide, you can create, read, update, and delete data, as well as perform complex queries, all with the power and flexibility of Entity Framework Core and the reliability of PostgreSQL.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .