پرووید
منو

آموزش کپسوله کردن کد های EF Core در سی شارپ

زبان: فارسی (دوبله شده)مترجم: پروویددوبلر: پروویدسطح: پیشرفتهمدت زمان: 02:26:53تعداد ویدئوها: 36فایل های پروژه: ناموجود
قیمت:۳٬۶۹۹٬۰۰۰ تومان
این آموزش بخشی از پکیج کامل آموزش شی گرایی (OOP) است که می توانید از تمامی آموزش های آن دیدن کنید.

آموزش کپسوله کردن کد های EF Core در سی شارپ یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی، کپسوله کردن کد های مربوط به EF Core 6است که با نام اصلی Encapsulating EF Core 6 Usageاز شرکت Pluralsight منتشر شده است.

تکنولوژی Entity Framework Core چیست؟

تکنولوژی Entity Framework Core به طور کوتاه به آن EF Core نیز می گویند یک نسخه cross-platform و open source و lightweight و extensible از تکنولوژی دسترسی به داده محبوب مایکروسافت، یعنیEntity Framework می باشد. EF Core می توانند در نقش یک ORM و یا object-relational mapper ظاهر بشود. این موضوع کمک می‌کند تا برنامه نویسان دات نت بتوانند با محتوای موجود در بانک های اطلاعاتی خود از طریق آبجکت های موجود در دات نت استفاده کنند. با استفاده از EF Core دیگر نیازی به نوشتن حجم زیادی از کدهای دسترسی به داده و یا د data-access code نیست. تکنولوژی EF Core از بسیاری از موتورهای دیتابیس ها و یا اصطلاحاً database engine های مختلف که به آنها Database Provider نیز می‌گوییم پشتیبانی می‌کنند. تکنولوژی EF Core وظیفه خود که data access و یا دسترسی به داده است را از طریق یک مدل انجام می دهد. یک مدل از entity class ها و context تشکیل شده است. یک context نمایانگر یک session با بانک اطلاعاتی مورد نظر می باشد. با استفاده از context امکان جستجو کردن و ذخیره کردن داده ها در بانک اطلاعاتی وجود دارد.

Sample Application Introduction - نمونه ای از بخش Encapsulating the DbContext در آموزش کپسوله کردن کد های EF Core در سی شارپ
نمونه ای از بخش «Encapsulating the DbContext» در آموزش کپسوله کردن کد های EF Core در سی شارپ

تنولوژی EF Core یک object-relational mapper مدرن و به روز شده است که از بسیاری از قابلیت‌های نسخه پیشین خود یعنی Entity Framework پشتیبانی می‌کند. در این تکنولوژی امکان استفاده کردن از LINQ و قابلیت هایی از قبیل change tracking و schema migrationلحاظ شده است. EF Core با دیتابیس های مختلف از قبیل SQL Server و Azure SQL Database و SQLite و Azure Cosmos DB و MySQL و PostgreSQL و بسیاری از database provider های دیگر، به سادگی کار می کند. ذکر این نکته نیز ضروری است که EF Core قابلیت‌های جدیدی که در نسخه پیشین خود. یعنی EF Core 6 قابل پیاده سازی نبود را لحاظ کرده است. البته تمامی قابلیت‌های Entity Framework 6در لحاظ نگردیده اند.

مفهوم Encapsulation و Abstraction در طراحی برنامه های دات نت

در طراحی نرم افزار، Encapsulation به معنای محدود کردن دسترسی مستقیم به جزئیات داخلی یک بخش و ارائه راهی مشخص برای استفاده از قابلیت های آن است. Abstraction نیز کمک می کند مصرف کننده یک بخش نرم افزاری با رفتارها و قراردادهای موردنیاز کار کند، بدون اینکه مجبور باشد تمام جزئیات پیاده سازی آن را بداند. این دو مفهوم در کنار یکدیگر به سازماندهی کد و کاهش وابستگی میان بخش های مختلف برنامه کمک می کنند.

هنگام استفاده از EF Core، این اصول می توانند در نحوه دسترسی بخش های مختلف برنامه به داده ها نقش داشته باشند. اگر تمام اجزای سیستم مستقیماً با DbContext و جزئیات Query نویسی درگیر شوند، تغییر شیوه دسترسی به داده ممکن است به اصلاح بخش های متعددی نیاز داشته باشد. کپسوله کردن این جزئیات می تواند مرزهای مشخص تری میان منطق برنامه و دسترسی به داده ایجاد کند. در این آموزش با Encapsulation و Abstraction و کاربرد آن ها در طراحی نرم افزار آشنا می شوید.

چگونه DbContext را در EF Core کپسوله کنیم؟

DbContext در EF Core وظیفه هماهنگی با داده های پایگاه داده را بر عهده دارد و از طریق آن می توان موجودیت ها را پرس وجو کرد و تغییرات را ذخیره نمود. اگر اجزای مختلف برنامه مستقیماً به جزئیات DbContext وابسته باشند، نحوه استفاده از پایگاه داده در بخش های زیادی از کد پراکنده می شود. کپسوله کردن DbContext یکی از راهکارهایی است که می تواند دسترسی به داده ها را در یک محدوده مشخص سازماندهی کند و مسئولیت ها را روشن تر سازد.

Partially-initialized Entities Anti-pattern - نمونه ای از بخش Avoiding Common Anti-Patterns در آموزش کپسوله کردن کد های EF Core در سی شارپ
نمونه ای از بخش «Avoiding Common Anti-Patterns» در آموزش کپسوله کردن کد های EF Core در سی شارپ

با این حال، ایجاد یک لایه اضافی همیشه بهترین انتخاب نیست و باید مشخص شود که این لایه چه مسئله ای را حل می کند. یک طراحی مناسب می تواند استفاده از قابلیت های EF Core را ساده تر کند، اما اگر فقط واسطه ای بدون ارزش افزوده ایجاد شود، ممکن است پیچیدگی برنامه را افزایش دهد. در این دوره با کپسوله کردن DbContext آشنا می شوید و یاد می گیرید هنگام طراحی لایه دسترسی به داده، میان ساده سازی ساختار و حفظ انعطاف پذیری تعادل برقرار کنید.

Repository Pattern در EF Core؛ چه زمانی به آن نیاز داریم؟

Repository Pattern الگویی برای سازماندهی دسترسی به داده است که معمولاً عملیات مرتبط با یک مجموعه از موجودیت ها را پشت یک قرارداد مشخص قرار می دهد. استفاده از این الگو می تواند در برخی معماری ها به جداسازی مسئولیت ها و ساده تر شدن نحوه استفاده از داده ها کمک کند. با این حال، EF Core خود امکاناتی برای پرس وجو و مدیریت تغییرات داده فراهم می کند و به همین دلیل، اضافه کردن Repository در تمام پروژه ها الزاماً مزیت مشخصی ایجاد نمی کند.

انتخاب این الگو باید بر اساس نیازهای واقعی برنامه، ساختار معماری و نوع عملیات داده انجام شود. گاهی Repository می تواند مرز مناسبی برای منطق دسترسی به داده ایجاد کند و گاهی نیز ممکن است قابلیت های EF Core را بدون نیاز واقعی پشت یک لایه اضافی پنهان کند. در این آموزش با اختلاف نظرهای رایج درباره Repository و روش های اجتناب از الگوهای نامناسب آشنا می شوید تا بتوانید هنگام طراحی برنامه های مبتنی بر EF Core تصمیم های آگاهانه تری بگیرید.

تفاوت IQueryable و IEnumerable در کار با EF Core

IQueryable و IEnumerable هر دو برای کار با مجموعه ای از داده ها در دات نت استفاده می شوند، اما در نحوه اجرای عملیات تفاوت مهمی دارند. IQueryable امکان ساخت عبارت های پرس وجو را فراهم می کند که یک Provider می تواند آن ها را به زبان مناسب منبع داده، مانند SQL، تبدیل کند. در مقابل، IEnumerable برای پیمایش مجموعه ها و اجرای عملیات روی عناصر آن ها کاربرد دارد. درک این تفاوت هنگام کار با EF Core اهمیت دارد، زیرا محل اجرای فیلترها و سایر عملیات می تواند بر عملکرد برنامه تأثیر بگذارد.

اگر داده ها پیش از اعمال فیلترهای موردنیاز از پایگاه داده دریافت شوند، ممکن است حجم بیشتری از اطلاعات به حافظه منتقل شود. در بسیاری از موارد، نگه داشتن عملیات قابل ترجمه در قالب IQueryable اجازه می دهد بخشی از پردازش در خود پایگاه داده انجام شود. البته رفتار دقیق به نوع عملیات و Provider مورد استفاده بستگی دارد. در این آموزش با انتخاب میان IQueryable و IEnumerable آشنا می شوید و یاد می گیرید چگونه تصمیم های مربوط به این دو رابط را در طراحی لایه دسترسی به داده در نظر بگیرید.

سرفصل مطالب آموزش ویدیویی کپسوله کردن کد های EF Core در سی شارپ

فصل اول: مقدمه دوره آموزشی
  • مقدمه
فصل دوم: یادگیری Encapsulation و Abstraction
  • مقدمه
  • Encapsulation چیست؟
  • Abstraction چیست؟
  • تفاوت بین Encapsulation و Abstraction
  • جمع بندی
فصل سوم: کپسوله کردن DbContext
  • مقدمه
  • معرفی کردن برنامه نمونه
  • کپسوله کردن DbContext
  • استفاده کردن از DbContext کپسوله شده به عنوان یک Dependency
  • بازبینی روال کپسوله کردن DbContext
  • جمع بندی
فصل چهارم: بررسی اختلاف نظر در رابطه با Repository
  • مقدمه
  • درک کردن اختلاف نظر در استفاده از Repository
  • چه زمانی یک Repository تعریف کنیم؟
  • مرحله 1: بازیابی کردن یک Collection از Entity های مرتبط
  • مرحله 2: استفاده کردن از Auto-including
  • مرحله 3: بازیابی کردن چندین Collection مرتبط
  • مرور نمونه های Repository
  • ذخیره کردن Domain Object ها
  • مقایسه Repository های Generic و غیر Generic
  • چگونه از Generic Repository استفاده کنیم؟
  • جمع بندی
فصل پنجم: اجتناب از الگوهای معمول
  • مقدمه
  • بررسی ضد الگوی Partially-initialized Entities
  • تعاثیر بارگذاری Entity ها به صورت کامل بر روی Performance
  • حل و فصل کردن مشکلات Performance در عملیات Read
  • خلاصه: بررسی ضد الگوی Partially-initialized Entities
  • Abstract کردن DbContext با استفاده از یک Unit of Work سفارشی
  • ارتباط برقرار کردن بین Repository ها با یک Unit of Work
  • جمع بندی
فصل ششم: انتخاب کردن بین IQueryable و IEnumerable
  • مقدمه
  • مزایا و معایب کار کردن با IQueryable
  • استفاده کردن از IEnumerable
  • استفاده کردن از IReadOnlyList
فصل هفتم: جمع بندی
  • جمع بندی این دوره آموزشی
دیدگاه کاربران

دیدگاه ها

برای ثبت دیدگاه ابتدا وارد حساب کاربری شوید.
هنوز دیدگاهی برای این محصول تایید نشده است.