ุจุนุฏ ู
ุง ุนู
ููุง ุงูู Entities (ุฒู ุงูู Employee
class)ุ ุงูุฎุทูุฉ ุงูุฌุงูุฉ ุฅููุง ูุนู
ู ุงูู Class
ุงููู ููุฑุจุท ุจูู ุงูุฃุจูููุดู ุจุชุงุนูุง ูุงูู Database. ุงูู Class
ุฏู ูู ุงูู DbContext
.
ูุนูู ุฅูู Understanding DbContext in Entity Framework Coreุ
ุงูู Understanding DbContext in Entity Framework Core ุฏู ูู ุญููุฉ ุงููุตู ุงูุฃุณุงุณูุฉ ุจูู ุงูููุฏ ุจุชุงุนู ูุงูู Database ูู ุงูู Entity Framework Core (ุฃู EF Core
).
- ู
ุณุฆูููุชู ุฅููุ ูู ุงูู
class
ุงููู ู ู ุฎูุงูู ุจุชูุฏุฑ ุชุนู ู ูู ุนู ููุงุช ุงูู Database ุฒู:- ุชูุชุญ ูุชููู ุงูู
connection
. - ุชุนู
ู
query
ูููdata
(ุชุฌูุจ ุจูุงูุงุช). - ุชุนู
ู
save
ููุชุบููุฑุงุช (ุชุถููุ ุชุนุฏูุ ุชู ุณุญ ุจูุงูุงุช).
- ุชูุชุญ ูุชููู ุงูู
- ุฃูุชุฑ ู
ู
Database
ุ ุฃู ุนุงุฏู ุฌุฏูุง. ู ู ูู ุงูุฃุจูููุดู ุจุชุงุนู ูููู ููู ุฃูุชุฑ ู ูDbContext
ุ ููู ูุงุญุฏ ูููู ู ู ูู ูุฑุจุท ุนูู Database ู ุฎุชููุฉุ ุฃู ุญุชู ููุณ ุงูู Database ุจุณ ุจุฅุนุฏุงุฏุงุช (configuration
) ู ุฎุชููุฉ ูู ู ุญุชุงุฌ. - ููุธู
ู ุฅุฒุงูุ ุฒู ู
ุง ุนู
ููุง
folder
ูููModels
ุ ูููุณ ุจุฑุถู ูุนู ูfolder
ูููDbContext
ููุณู ูู ู ุซููุงContexts
ุฃูDataAccess
. - ุงูุชุณู
ูุฉ: ุงูู
ุชุนุงุฑู ุนููู ุจูู ุงูู
ุจุฑู
ุฌูู ุฅููุง ุจูุถูู ููู
ุฉ
DbContext
ูู ุขุฎุฑ ุงุณู ุงูููุงุณ ุฏูุ ุนุดุงู ูุจูู ูุงุถุญ ุฏูุฑู. ุฒู ู ุซููุงCompanyDbContext
ุฃูApplicationDbContext
.
ุฅุฒุงู ูุนู
ู DbContext
ุ
ุชุนุงูู ูุนู
ู ุงูู DbContext
ุจุชุงุนูุง ููุณู
ูู CompanyDbContext
.
// Put this class inside the created folder (e.g., Contexts)
using Microsoft.EntityFrameworkCore; // Add this using directive
// 1. Inherit from DbContext base class
internal class CompanyDbContext : DbContext
{
// 2. Override the OnConfiguring method
// Responsible for configuring DB connection (e.g., Connection String)
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Configure the database provider (SQL Server) and connection string
// Use UseSqlServer for SQL Server
// Use modern connection string format
// Use UseSqlServer extension method which requires Microsoft.EntityFrameworkCore.SqlServer package
optionsBuilder.UseSqlServer("Server=.;Database=Company;Trusted_Connection=True;Encrypt=False");
// Note: Added Encrypt=False for local dev/simpler setup; review for production. Important for newer SQL Server driver versions.
// Old connection string format (still works)
// optionsBuilder.UseSqlServer("Data Source=.;Initial Catalog=Company;Integrated Security=True");
// Can use lambda expression for brevity if it's a single line
// protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
// => optionsBuilder.UseSqlServer("Server=.;Database=Company;Trusted_Connection=True;Encrypt=False");
}
// 3. Next step: Add DbSets for our models here
// public DbSet<Employee> Employees { get; set; } // To be added later
}
ุดุฑุญ ุงูุฎุทูุงุช:
- ุงููุฑุงุซุฉ (Inheritance): ุฃูู
ุญุงุฌุฉ ุฅู ุงูููุงุณ ุจุชุงุนูุง (
CompanyDbContext
) ูุงุฒู ููุฑุซ ู ู ุงูููุงุณ ุงูุฃุณุงุณู ุงููู ุงุณู ูDbContext
. ุงูููุงุณ ุฏู ู ูุฌูุฏ ุฌูู ุงููnamespace
ุงููู ุงุณู ูMicrosoft.EntityFrameworkCore
(ูุงุฒู ุชุนู ู ููusing
). - ุงูู
OnConfiguring
Method
:- ุฏู
method
ู ูุฌูุฏุฉ ุฃุตููุง ูู ุงููDbContext
ุงูุฃุจุ ูุฅุญูุง ุจูุนู ููุงoverride
ุนุดุงู ูุญุท ุงูุฅุนุฏุงุฏุงุช ุงูุฎุงุตุฉ ุจุชุงุนุชูุง. - ูุธููุชูุง ุงูุฃุณุงุณูุฉ ุฅููุง ูุญุฏุฏ ููู EF Core ุฅุฒุงู ููุตู ููู Database. ุฏู ุจูุญุตู ุนู ุทุฑูู ุงูู
optionsBuilder
ุงููู ุจูุฌูููุง ููparameter
. - ุจูุณุชุฎุฏู
optionsBuilder.UseSqlServer(...)
(ุฃูUseMySql
,UseNpgsql
, etc. ุญุณุจ ููุน ุงูู Database) ุนุดุงู ููููู ุฅููุง ููุณุชุฎุฏู ุงูููุน ุฏู ู ู ุงูู Databases. ุงููUseSqlServer
ุฏู ุนุจุงุฑุฉ ุนูextension method
ุจุชูุฌู ู ู ุงููpackage
ุงููู ููุฒููุง ูู ุงู ุดููุฉ. - ุฌูู ุงูู
UseSqlServer
ุจูุญุท ุฃูู ุญุงุฌุฉ: ุงูู Connection String.
- ุฏู
ุงูู NuGet Package ุงูู ุทููุจุฉ
ุงูููุงุณ DbContext
ูุงูู method
ุงููู ุงุณู
ูุง UseSqlServer
ู
ุด ู
ูุฌูุฏูู ูู ุงูู .NET ูุฏู ููุญุฏูู
. ูุงุฒู
ููุฒู package
ู
ู NuGet ุนุดุงู ูุถูููู
ููู project
ุจุชุงุนูุง.
-
ุงุณู ุงูู
Package
: ูู ูุชุณุชุฎุฏู Microsoft SQL Serverุ ูุจูู ู ุญุชุงุฌ ุชูุฒู ุงููpackage
ุฏู:Microsoft.EntityFrameworkCore.SqlServer
. -
ูู
Database
ุชุงููุฉ: ูู ููุน Database ููู ุงููpackage
ุจุชุงุนุชู (ุฒูNpgsql.EntityFrameworkCore.PostgreSQL
ูู PostgreSQL ุฃูPomelo.EntityFrameworkCore.MySql
ูู MySQL). -
ุฅุฒุงู ููุฒููุงุ
- ู
ู ุงูู
Package Manager Console
(PM
):Install-Package Microsoft.EntityFrameworkCore.SqlServer
- ูู ุนุงูุฒ
version
ู ุนูู:Install-Package Microsoft.EntityFrameworkCore.SqlServer -v 6.0.29 // ุฃู ุฃู ุฑูู version ุชุงูู
- ูู ุนุงูุฒ
- ู
ู ุงูู
NuGet Package Manager UI
:- ุฏูุณ ูููู ูู
ูู ุนูู ุงูู
Project
ูู ุงููSolution Explorer
. - ุงุฎุชุงุฑ โManage NuGet Packagesโฆโ.
- ุฑูุญ ุนูู ุชุงุจ โBrowseโ.
- ุงุจุญุซ ุนู
Microsoft.EntityFrameworkCore.SqlServer
. - ุงุฎุชุงุฑูุง ูุฏูุณ โInstallโ.
- ุฏูุณ ูููู ูู
ูู ุนูู ุงูู
- ู
ู ุงูู
ุดุฑุญ ุงูู Connection String
ุงูู Connection String ุฏู ุนุจุงุฑุฉ ุนู string
ุจูุญุชูู ุนูู ูู ุงูู
ุนููู
ุงุช ุงููู ุงูู EF Core ู
ุญุชุงุฌูุง ุนุดุงู ูุนุฑู ููุชุญ connection
ู
ุน ุงูู Database ุจุชุงุนุชู. ุจูุชููู ู
ู ุฃุฌุฒุงุก (key=value
) ู
ูุตููุฉ ุจู semicolon (;
).
ุงูุฃุฌุฒุงุก ุงูู ุดููุฑุฉ (ูู ุงูู ุซุงู ุจุชุงุนูุง):
-
ุงูุตูุบุฉ ุงูุฌุฏูุฏุฉ (ุงูู ููุถูุฉ):
- ุงูู
Server=.;
- ุงูู
Server
: ุฏู ุงุณู ุงููSQL Server instance
ุงููู ุนููู ุงูู Database. - ุงูููู
ุฉ
.
(ููุทุฉ) ุฃู(localdb)\mssqllocaldb
ุฃูlocalhost
ู ุนูุงูุง ุฅู ุงููServer
ู ูุฌูุฏ ุนูู ููุณ ุงูุฌูุงุฒ ุงููู ุงูุฃุจูููุดู ุดุบุงู ุนููู (local machine
).
- ุงูู
- ุงูู
Database=Company;
- ุงูู
Database
: ุฏู ุงุณู ุงูู Database ููุณูุง ุงููู ุนุงูุฒ ุชุชุนุงู ู ู ุนุงูุง.
- ุงูู
- ุงูู
Trusted_Connection=True;
- ุงูู
Trusted_Connection
: ูู ุง ุชูููTrue
ุ ุฏู ู ุนูุงู ุฅูู ูุชุณุชุฎุฏู ุงูู Windows Authentication. ูุนูู ุงููSQL Server
ููุณุชุฎุฏู ููุณ ุญุณุงุจ ุงููWindows
ุงููู ุฅูุช ุนุงู ู ุจููlogin
ุนุดุงู ูุฏุฎููุ ูู ุด ู ุญุชุงุฌ ุชูุชุจusername
ูpassword
.
- ุงูู
- ุงูู
Encrypt=False;
(ู ูู ููู drivers ุงูุฌุฏูุฏุฉ)- ุงูู
Encrypt
: ุจุชุญุฏุฏ ุฅุฐุง ูุงู ุงูุงุชุตุงู ููุชู ุชุดููุฑู ููุง ูุฃ. ูู ุงููversions
ุงูุฌุฏูุฏุฉ ู ูdriver
ุงููSQL Server
ุ ุงูููู ุฉ ุงูุงูุชุฑุงุถูุฉ ุจูุชTrue
ุ ูุฏู ู ู ูู ูุณุจุจ ู ุดุงูู ูู ุงููServer
ู ุด ู ุนู ูู ููsetup
ุนุดุงู ูุฏุนู ุงูุชุดููุฑ ุจุดูุงุฏุฉ ู ูุซููุฉ. - ุนุดุงู ูุฏูุ ูู ุจุชุทูุฑ ุนูู ุฌูุงุฒู ุงูู
ุญูู (
local
) ุฃู ูู ุจูุฆุฉ ู ุด ู ุญุชุงุฌุฉ ุชุดููุฑ ุฅุฌุจุงุฑูุ ู ู ูู ุชุญุทูุงFalse
ูุชุณููู ุงูุฃู ูุฑ ู ุคูุชูุง. - ูู ุงูู
Production
ุ ุงูุฃู ุงู ุฃูู ุทุจุนูุงุ ููุชุญุชุงุฌ ุบุงูุจูุง ุชุฎูููุงTrue
ูุชุธุจุท ุดูุงุฏุงุช ุงูุฃู ุงู ุตุญ ุฃู ุชุณุชุฎุฏูTrustServerCertificate=True
ูู ูุงูู ุงูู ุฎุงุทุฑ.
- ุงูู
- ุงูู
-
ุงูุตูุบุฉ ุงููุฏูู ุฉ (ูุณู ุดุบุงูุฉ):
- ุงูู
Data Source=.;
(ููุณ ู ุนููServer
) - ุงูู
Initial Catalog=Company;
(ููุณ ู ุนููDatabase
) - ุงูู
Integrated Security=True;
(ููุณ ู ุนููTrusted_Connection=True
)
- ุงูู
-
ูู ูุชุณุชุฎุฏู SQL Server Authentication (
Username
/Password
):- ู
ุด ูุชุณุชุฎุฏู
Trusted_Connection
ุฃูIntegrated Security
. - ูุชุถูู ุฏูู ุจุฏููู
:
- ุงูู
User ID=your_username;
(ุงุณู ุงูู ุณุชุฎุฏู ุจุชุงุน ุงูู SQL) - ุงูู
Password=your_password;
(ุงูุจุงุณูุฑุฏ ุจุชุงุน ุงูู SQL) - (ูุจุฑุถู ูุชุธุจุท ุงูู
Encrypt
ุญุณุจ ุงูุจูุฆุฉ ุจุชุงุนุชู)
- ุงูู
- ู
ุด ูุชุณุชุฎุฏู
ุฅุฒุงู ุงูู OnConfiguring
ุจุชุดุชุบูุ
ูู
ุง ุจุชูุฌู ูู ุงูููุฏ ุจุชุงุนู ูุชุนู
ู object
ุฌุฏูุฏ ู
ู ุงูู DbContext
ุจุชุงุนู:
// ูู ุฃู ู
ูุงู ูู ุงูููุฏ ุจุชุงุนู ูุชุญุชุงุฌ ุชุชุนุงู
ู ู
ุน ุงูุฏุงุชุงุจูุฒ
CompanyDbContext dbContext = new CompanyDbContext();
ุงููู ุจูุญุตู ูุงูุชุงูู:
- ุงูู Constructor ุจุชุงุน
CompanyDbContext
ุจูุดุชุบู (ุญุชู ูู ุฅูุช ู ูุชุจุชุดconstructor
ูุงุถูุ ุงููcompiler
ุจูุนู ู ูุงุญุฏ ุงูุชุฑุงุถู). - ุงูู Constructor ุฏู (ุจุดูู ุถู
ูู ุฃู ุตุฑูุญ ูู ุนู
ูุช chaining) ุจููุงุฏู ุนูู ุงูู
constructor
ุจุชุงุน ุงููbase class
ุงููู ููDbContext
. - ูุฌุฒุก ู
ู ุนู
ููุฉ ุงูู
initialization
ุงููู ุจูุนู ููุง ุงููconstructor
ุจุชุงุนDbContext
ุงูุฃุณุงุณูุ ูู ุจูุฑูุญ ููุงุฏู ุนูู ุงููOnConfiguring
method
. - ุจู
ุง ุฅู ุฅุญูุง ุนุงู
ููู
override
ูููOnConfiguring
ูู ุงูููุงุณ ุจุชุงุนูุง (CompanyDbContext
)ุ ูุงููุณุฎุฉ ุจุชุงุนุชูุง ูู ุงููู ูุชุชููุฐ. - ุงููุณุฎุฉ ุจุชุงุนุชูุง ูุชุญุท ุงูุฅุนุฏุงุฏุงุช ุงููู ูุชุจูุงูุง (ุฒู
UseSqlServer
ู ุน ุงูู Connection String) ุฌูู ุงููoptionsBuilder
. - ูุฏู ุงูู
DbContext
ุจูู ุฌุงูุฒ ูู ุนุงู ูู ุงูู ุนููู ุงุช ุงููู ู ุญุชุงุฌูุง ุนุดุงู ููุตู ููู Database.
ุนูุงูุฉ ุฏู ุจุงูู DbContextOptions
:
ุงูู optionsBuilder
ุงููู ุจูุณุชุฎุฏู
ู ุฌูู OnConfiguring
ูู ู
ู ููุน DbContextOptionsBuilder
. ุฏู ุงูู object
ุงููู ุงูู EF Core ุจูุฏูููููุง ุนุดุงู ูุจูู (build
) ุงูู options
ุงููู ุงูู DbContext
ููุณุชุฎุฏู
ูุง. ุงูู options
ุฏู ูู ุงูุขุฎุฑ ุจุชุจูู object
ู
ู ููุน DbContextOptions
(ุฃู DbContextOptions<TContext>
).
ููู ุทุฑู ุชุงููุฉ ูุชู
ุฑูุฑ ุงูู options
ุฏู ููู DbContext
(ุฒู ุฅููุง ูุนู
ู constructor
ูู CompanyDbContext
ุจูุงุฎุฏ DbContextOptions<CompanyDbContext>
ูู parameter
ููู
ุฑุฑูุง ููู base constructor
)ุ ูุฏู ุงูุทุฑููุฉ ุงูุฃูุซุฑ ุดููุนูุง ูู
ุง ุจูุณุชุฎุฏู
DNAPI Dependency Injection. ููู ุทุฑููุฉ ุงูู OnConfiguring
ุฏู ุจุณูุทุฉ ูู
ุจุงุดุฑุฉ ูู ุงูุฅุนุฏุงุฏุงุช ุซุงุจุชุฉ ูู
ุด ู
ุญุชุงุฌุฉ ุชุชุบูุฑ ู
ู ุจุฑู.
ุฏูููุชู ุงูู DbContext
ุจุชุงุนูุง ุฌุงูุฒ ูุนุฑู ููุตู ููู Database. ุงูุฎุทูุฉ ุงูุฌุงูุฉ ุฅููุง ูุนุฑูู ุนูู ุงูู Models ุจุชุงุนุชูุง (ุฒู Employee
) ุนุดุงู ููุฏุฑ ูุญูููุง ูู Table. ุฏู ุจูุชู
ุนู ุทุฑูู ุฅุถุงูุฉ DbSet properties
ุฌูู ุงูู DbContext
.