पाठ 18 / 26

Entities और DbContext

Entity, DbContext परिभाषित करें और connection string के साथ register करें।

DbContext

EF Core एक object-relational mapper है। DbContext database के साथ एक session दर्शाता है, और हर DbSet<T> property एक table। वह आपके बदलाव ट्रैक करता है और SaveChanges पर लिखता है।

कोड से database तक

Entity classes tables से map होती हैं, migrations schema बदलती हैं, और LINQ queries SQL बन जाती हैं।

मॉडल से stored rows तक चार चरण।
चित्र 6.1 — Model, migration, database, query।

एक छोटा मॉडल

उदाहरण को सरल रखने के लिए SQLite है; provider package बदलकर यही कोड SQL Server या PostgreSQL के साथ भी चलता है।

public class Book
{
    public int Id { get; set; }
    public required string Title { get; set; }
    public decimal Price { get; set; }
}

public class ShopDb(DbContextOptions<ShopDb> options) : DbContext(options)
{
    public DbSet<Book> Books => Set<Book>();
}

// Program.cs
builder.Services.AddDbContext<ShopDb>(o =>
    o.UseSqlite(builder.Configuration.GetConnectionString("Default")));

DbContext को scoped रखें

AddDbContext उसे scoped register करता है, और यही सही है: वह thread-safe नहीं है, इसलिए एक instance को समवर्ती requests में साझा न करें।

त्वरित जाँच: DbSet<Book> property आम तौर पर क्या दर्शाती है?

  • Database server
  • Books की table
  • Migration फ़ाइल
  • Connection string
Answer

Books की table — हर `DbSet<T>` एक table (या view) से map होता है जिसमें entity type की rows होती हैं।