ORM چیست؟
لایهای که جدولهای دیتابیس رابطهای را به کلاسها و آبجکتهای زبان برنامهنویسی نگاشت میکند تا کار با داده بدون نوشتن SQL خام انجام شود.
چرا مهم است؟
بدون ORM هر عملیات داده باید با SQL دستی و Mapping دستی نتیجه به آبجکت نوشته شود؛ ORM این کار تکراری را خودکار میکند و سرعت توسعه را بالا میبرد.
تعریف
ORM (Object-Relational Mapping) جدولهای دیتابیس را به کلاسها و ردیفها را به Instance آن کلاسها نگاشت میکند؛ کوئریها هم به زبان برنامهنویسی نوشته میشوند نه SQL خام.
دو رویکرد رایج در داتنت
- EF Core: ORM کامل با Change Tracking، Migration خودکار و LINQ؛ برای اکثر برنامهها.
- Dapper: Micro-ORM سبک؛ خودتان SQL مینویسید، Dapper فقط نتیجه را به آبجکت Map میکند — کنترل و سرعت بیشتر، کد بیشتر.
مثال (EF Core)
var activeUsers = await context.Users
.Where(u => u.IsActive)
.OrderBy(u => u.Name)
.ToListAsync();
مزیت و هزینه
✔ کد کمتر، Type-Safety، مستقل از نوع دیتابیس (تا حدی). ❌ روی کوئریهای پیچیده و حجم بالا Overhead دارد؛ باید SQL تولیدشده را با Profiler چک کرد.
اشتباه رایج
❌ اعتماد کورکورانه به ORM برای هر کوئری، حتی گزارشهای سنگین تحلیلی — اینجا SQL خام یا Dapper معمولاً کاراتر است.
منبع و مطالعه بیشتر
خلاصه
ORM جدول را به کلاس و ردیف را به آبجکت نگاشت میکند تا نیاز به SQL دستی کم شود. EF Core کامل و خودکار است، Dapper سبک و صریح؛ انتخاب بر اساس نیاز به کنترل در برابر سرعت توسعه است. مرجع کامل: Microsoft Learn و learndapper.com.
