Enumها به عنوان رشته در EF Core:
کدی خواناتر برای دیتابیس شما 📜
وقتی از Enumها در Entity Framework Core استفاده میکنید، به صورت پیشفرض به شکل عدد (0, 1, 2) در دیتابیس ذخیره میشن. این کار از نظر پرفورمنس خوبه، ولی وقتی مستقیم به دیتابیس نگاه میکنید، این عددها هیچ معنایی ندارن! 🧐
اما یه راه حل خیلی ساده و تمیز برای افزایش خوانایی و قابلیت نگهداری دیتابیس وجود داره: ذخیره کردن Enumها به صورت رشته.
جادوی HasConversion ✨
با استفاده از متد HasConversion در Fluent API، میتونید به راحتی به EF Core بگید که مقادیر Enum رو به جای عدد، به صورت نام رشتهای اونها ذخیره کنه.
1️⃣ Enum شما:
public enum OrderStatus
{
Pending,
Completed,
Cancelled
}
2️⃣ انتیتی شما:
public class Order
{
public int Id { get; set; }
public OrderStatus Status { get; set; }
}
3️⃣ پیکربندی در DbContext:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>()
.Property(o => o.Status)
.HasConversion<string>(); // تمام جادو اینجاست!
}
حالت پیشفرض (بدون HasConversion): 👎
| Id | Status |
| :-- | :--- |
| 1 | 0 |
| 2 | 1 |
حالت جدید (با HasConversion): 👍
| Id | Status |
| :-- | :--- |
| 1 | "Pending" |
| 2 | "Completed" |
🤔 حرف حساب و تجربه شما
این تغییر کوچیک، دیباگ کردن و کار مستقیم با دیتابیس رو خیلی راحتتر میکنه. با اینکه ذخیرهسازی به صورت عدد کمی بهینهتره، اما در اکثر پروژهها، خوانایی بالاتر Enum به صورت رشته، ارزشش رو داره.
</Link>
🔖 هشتگها:
#EntityFrameworkCore #EFCore #Database