EF Core چیست؟
ORM رسمی مایکروسافت برای داتنت که کوئری، ردیابی تغییرات (Change Tracking) و Migration دیتابیس را با LINQ و کد C# مدیریت میکند.
چرا مهم است؟
EF Core استاندارد دوفاکتوی دسترسی به داده در پروژههای ASP.NET Core است؛ تسلط به Change Tracking و Migration آن مستقیماً روی کارایی و پایداری برنامه اثر میگذارد.
تعریف
EF Core یک ORM کامل از مایکروسافت است که کلاسهای C# را به جدولهای دیتابیس نگاشت میکند، کوئریها را با LINQ مینویسید و خودش SQL معادل تولید میکند.
مثال پایه
public class AppDbContext : DbContext
{
public DbSet<Product> Products => Set<Product>();
}
var cheapProducts = await db.Products
.Where(p => p.Price < 500000)
.OrderBy(p => p.Name)
.ToListAsync();
Migration
dotnet ef migrations add AddProductTable
dotnet ef database update
Migration تغییرات مدل C# را به تغییرات Schema دیتابیس (ستون/جدول جدید) تبدیل میکند، بدون نیاز به نوشتن دستی اسکریپت SQL.
Change Tracking
EF Core بهصورت پیشفرض وضعیت هر Entity خواندهشده را ردیابی میکند تا با SaveChangesAsync() فقط تغییرات واقعی را در قالب UPDATE/INSERT/DELETE بفرستد. برای Queryهای فقطخواندنی، AsNoTracking() این Overhead را حذف میکند.
اشتباه رایج
❌ فراخوانی .ToList() زودتر از لازم و فیلتر/مرتبسازی روی حافظه بهجای دیتابیس — کل جدول از دیتابیس خوانده میشود در حالیکه فیلتر باید در SQL (سمت سرور دیتابیس) انجام شود.
منبع و مطالعه بیشتر
خلاصه
EF Core جدول را به کلاس و کوئری LINQ را به SQL تبدیل میکند و با Migration تغییرات Schema را مدیریت میکند. برای Queryهای فقطخواندنی از AsNoTracking و برای فیلتر همیشه از سمت دیتابیس (نه حافظه) استفاده کنید. مرجع کامل: Microsoft Learn.
