برنامه نویسی
معماری تمیز: چرا من مستقیماً تزریق DBContext را متوقف کردم

در روزهای ابتدایی با هسته ASP.NET ، من اغلب dbcontext را مستقیماً به کنترل کننده ها یا خدمات تزریق می کردم. این کار کرد-اما با گذشت زمان ، اوضاع کثیف شد: کد سخت آزمون ، اتصال محکم و منطق کسب و کار به زیرساخت ها نشت می کند.
این کاری است که اکنون انجام می دهم:
من از الگوی مخزن با واحد کار برای از بین بردن منطق دسترسی به داده ها. خدمات من با رابط هایی مانند IorderRepository صحبت می کنند ، نه DBContext.
public interface IOrderRepository
{
Task GetByIdAsync(Guid id);
void Add(Order order);
}
مزایا:
-
تست واحد آسانتر (مخازن مسخره)
-
جدایی روشن از نگرانی ها
-
منطق دامنه با کد خاص EF مخلوط نشده است
نکته:
اگر در حال کار بر روی یک پروژه متوسط تا بزرگ هستید ، سعی کنید هسته EF را در پشت رابط ها جدا کنید. این یک تغییر کوچک است که زمان زیادی را می پردازد.