पाठ 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 बन जाती हैं।
एक छोटा मॉडल
उदाहरण को सरल रखने के लिए 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 होती हैं।