Loading...

Introduction to Entity Framework Core in C#

Learn the basics of Entity Framework Core in C#, including DbContext, DbSet, and fundamental database operations.

Entity Framework Core (EF Core) is an object–relational mapper (ORM) used in the .NET ecosystem, allowing database operations to be performed with an object-oriented approach. With EF Core, database tables can be managed through C# classes without writing raw SQL queries. In this article, we’ll cover the basics of EF Core, including DbContext, Entity definitions, and basic CRUD operations. (We will not dive into MS-SQL specifics, only the general EF Core approach.)


Advantages of EF Core


Defining an Entity

In EF Core, a database table is usually represented by a C# class. Properties of the class map to table columns.


public class Product
{
    public int Id { get; set; }      // Primary key
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
}

The DbContext Class

DbContext is the core of EF Core. It manages the database connection and interactions with tables.


using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Configure the database provider here
        optionsBuilder.UseInMemoryDatabase("TestDb");
    }
}

Note: For simplicity, this example uses InMemoryDatabase.


Basic CRUD Operations

With EF Core, Create, Read, Update, Delete operations can be performed easily.


using (var db = new AppDbContext())
{
    // CREATE
    db.Products.Add(new Product { Name = "Laptop", Price = 1500 });
    db.SaveChanges();

    // READ
    var products = db.Products.ToList();
    foreach (var p in products)
        Console.WriteLine($"{p.Id} - {p.Name} - {p.Price}");

    // UPDATE
    var product = db.Products.First();
    product.Price = 1400;
    db.SaveChanges();

    // DELETE
    db.Products.Remove(product);
    db.SaveChanges();
}

Querying with LINQ

EF Core integrates seamlessly with LINQ (Language Integrated Query). This allows writing strong, type-safe queries without raw SQL.


// Select products more expensive than 1000
using (var db = new AppDbContext())
{
    var expensive = db.Products
                      .Where(p => p.Price > 1000)
                      .OrderBy(p => p.Name);

    foreach (var item in expensive)
        Console.WriteLine(item.Name);
}

The Concept of Migrations

EF Core provides Migrations to create or update the database schema directly from code. Code changes are tracked and applied to the database with migrations.


// Example commands (run from CLI)
// dotnet ef migrations add InitialCreate
// dotnet ef database update

TL;DR

  • EF Core simplifies database operations with the ORM approach.
  • DbContext: Manages the database connection and tables.
  • Entity: C# classes representing tables.
  • CRUD operations (Create, Read, Update, Delete) are straightforward.
  • LINQ provides type-safe queries.
  • Migrations allow managing the database schema from code.

Related Articles