
آموزش شروع به کار با Entity Framework Core 2.1
آموزش شروع به کار با Entity Framework Core 2.1 یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی ویژگی های جدید Entity Framework Core 2.1 است که با نام اصلی Entity Framework Core 2.1 What's New Playbook از شرکت Pluralsight منتشر شده است.
Entity Framework چیست؟
Entity Framework یک object-relational mapper که به برنامه نویسان دات نت این امکان را می دهد که با داده های بانک های اطلاعاتی در قالب Object های محیط شی گرا کار کنند. به عبارت دیگر، دیگر نیازی به نوشتن کدهای دسترسی به داده ها که در ADO.NET نوشته می شوند نیست.

قدرت بسیار بالای Entity Framework در انجام وظایف اولیه شبیه عملیات CRUD، استفاده از LINQ، استفاده از Stored Procedure ها، استفاده از View ها، TVF ها، در دسترس بودن Entity SQL و … از ویژگی هایی ست که این تکنولوژی بسیار قدرتمند در اختیار توسعه دهندگان نرم افزار قرار می دهد.
Entity Framework Core چیست؟
Entity Framework Core جدیدترین تکنولوژی مایکروسافت برای ساخت لایه ی Data Access در برنامه ی cross-platform می باشد.

این نسخه از Entity Framework یک نسخه ی سبک وزن، قابل گسترش و cross-platform می باشد. در مقایسه با ورژن ششم Entity Framework بهبودهایی در EF Core 2.0 انجام شده است.
قابلیتهای جدید Entity Framework Core 2.1
Entity Framework Core 2.1 نسخهای از ORM مایکروسافت برای برنامههای مبتنی بر .NET است که قابلیتهای جدیدی را برای کار با دادهها و بانکهای اطلاعاتی معرفی کرد. آشنایی با تغییرات این نسخه برای توسعهدهندگانی که از Entity Framework Core در پروژههای خود استفاده میکنند، اهمیت دارد؛ زیرا شناخت امکانات تازه میتواند به انتخاب روشهای مناسبتر برای پیادهسازی لایه دسترسی به داده کمک کند. بررسی تغییرات هر نسخه همچنین باعث میشود برنامهنویسان هنگام کار با کدهای موجود، شناخت دقیقتری از قابلیتهای در دسترس داشته باشند.
در نسخه 2.1، موضوعاتی مانند Lazy Loading، تبدیل مقادیر هنگام Mapping، بهبود پشتیبانی از عملیات GroupBy و معرفی Query Type ها مطرح شدند. این قابلیتها جنبههای مختلفی از تعامل برنامه با دادهها را پوشش میدهند و در سناریوهای متفاوتی مورد استفاده قرار میگیرند. درک این تغییرات به شما کمک میکند امکانات Entity Framework Core را بهتر بشناسید و هنگام طراحی مدل داده یا نوشتن Query، تصمیمهای آگاهانهتری بگیرید. این موضوع بهویژه برای توسعهدهندگانی مفید است که میخواهند دانش خود را درباره نسخههای مختلف این ORM گسترش دهند.
Lazy Loading در Entity Framework Core 2.1
Lazy Loading روشی برای بارگذاری اطلاعات مرتبط است که در آن دادههای وابسته هنگام نیاز دریافت میشوند، نه لزوماً در همان زمان بارگذاری موجودیت اصلی. این قابلیت میتواند در مدلهایی که روابط متعددی میان موجودیتها دارند، مفید باشد؛ زیرا امکان دسترسی به اطلاعات مرتبط را بدون بارگذاری فوری تمام دادههای وابسته فراهم میکند. البته استفاده از Lazy Loading به شناخت رفتار Query ها و تعداد درخواستهای ارسالشده به بانک اطلاعاتی نیاز دارد تا از بارگذاریهای غیرضروری و مشکلات عملکردی احتمالی جلوگیری شود.
در Entity Framework Core 2.1، پشتیبانی از Lazy Loading یکی از قابلیتهای مهم معرفیشده بود. در این آموزش، این موضوع در دو حالت با استفاده از Proxy ها و بدون آنها بررسی میشود تا با روشهای مختلف پیادهسازی آن آشنا شوید. شناخت تفاوت این رویکردها به شما کمک میکند نحوه بارگذاری دادههای مرتبط را بهتر درک کنید و متناسب با ساختار برنامه خود تصمیم بگیرید. این دانش برای توسعهدهندگانی که با مدلهای داده رابطهای و Navigation Property ها کار میکنند، کاربردی است.
Value Conversion و Query Type در EF Core 2.1
در Entity Framework Core، Mapping به ارتباط میان مدلهای برنامه و ساختار ذخیرهسازی دادهها کمک میکند. قابلیت Value Conversion امکان تبدیل مقادیر میان نوع مورد استفاده در برنامه و نوع مناسب برای ذخیرهسازی را فراهم میسازد. این ویژگی میتواند هنگام کار با انواع داده سفارشی یا Enum ها مفید باشد و انعطاف بیشتری در تعریف مدل ایجاد کند. درک نحوه استفاده از تبدیل مقادیر به توسعهدهندگان کمک میکند مدلهای برنامه را با نیازهای بانک اطلاعاتی هماهنگ کنند، بدون اینکه الزاماً ساختار داخلی برنامه را مطابق با نوع ذخیرهسازی تغییر دهند.
Query Type ها نیز در Entity Framework Core 2.1 برای نمایش دادههایی معرفی شدند که لزوماً مانند موجودیتهای معمولی به یک جدول قابلبهروزرسانی نگاشت نمیشوند. این قابلیت برای سناریوهایی که به نمایش دادههای حاصل از Query یا منابعی مانند View نیاز دارند، اهمیت دارد. در این دوره، علاوه بر Query Type ها، انتقال عملیات GroupBy به Server نیز بررسی میشود. آشنایی با این امکانات به شما کمک میکند تفاوت میان روشهای مختلف مدلسازی و اجرای Query را بهتر بشناسید و از قابلیتهای این نسخه در طراحی لایه داده استفاده کنید.
تست دادهها و کنترل عملیات ذخیرهسازی در EF Core 2.1
توسعه نرمافزارهای مبتنی بر Entity Framework Core تنها به تعریف مدلها و اجرای Query ها محدود نمیشود؛ بررسی رفتار کد در شرایط مختلف نیز اهمیت دارد. استفاده از In-Memory Test Provider در عملیات Seeding میتواند به آمادهسازی دادههای موردنیاز برای آزمایش کمک کند. Seeding به فرایند مقداردهی اولیه دادهها گفته میشود و در سناریوهایی که برنامه به مجموعهای از دادههای اولیه نیاز دارد، کاربرد دارد. آشنایی با این موضوع به توسعهدهندگان کمک میکند نحوه آمادهسازی دادهها را در محیطهای آزمایشی بهتر درک کنند.
در این آموزش، کنترل بیشتر عملیات ذخیرهسازی با استفاده از System Transaction ها و کار با Tracking Event های جدید نیز مطرح میشود. Transaction ها امکان گروهبندی عملیات مرتبط را در قالب یک واحد تراکنشی فراهم میکنند تا بتوان رفتار آنها را هماهنگتر مدیریت کرد. Tracking Event ها نیز به بررسی رویدادهای مرتبط با رهگیری تغییرات موجودیتها کمک میکنند. آشنایی با این قابلیتها دید گستردهتری نسبت به امکانات Entity Framework Core 2.1 به شما میدهد و برای توسعهدهندگانی که با لایه دسترسی به داده در برنامههای .NET کار میکنند، مفید است.
سرفصل مطالب آموزش ویدئویی شروع به کار با Entity Framework Core 2.1
فصل اول: معرفی دوره آموزشی
- معرفی
- معرفی Entity Framework Core 2.1
- مقدمه
- درک بهتر اعداد ورژن های مربوط به Entity Framework Core
- انتظارات مربوط به این دوره آموزشی
فصل سوم: انجام عملیات Seeding برای Database با استفاده از In-Memory Test Provider
- مقدمه
- معرفی یک روش آسان برای Seed کردن داده ها
- انجام عملیات Seeding با استفاده از یک سطر از داده
- متد HasData چگونه با Key Value ها رفتار می کند؟
- انجام عملیات Seeding برای Related Data ها
- انجام عملیات Seeding با Anonymous Type ها در زمان عدم وجود Property ها
- انجام عملیات Seeding با استفاده از Client-generated Value ها
- استفاده از Anonymous Type ها برای حل و فصل کردن برخی دیگر از مشکلات عملیات Seeding
- انجام عملیات Seeding برای دیتابیس های InMemory Test در زمان Runtime
- خلاصه و جمع بندی
فصل چهارم: کنترل کردن بیشتر عملیات ذخیره سازی با استفاده از System Transaction ها
- مقدمه
- درک بهتر System Transaction ها در Entity Framework Core
- بررسی یک Solution در مرحله ابتدایی
- بررسی رفتار فعلی Entity Framework Core در کار کردن با Transaction ها
- ساده سازی و سفارشی سازی Transaction ها با استفاده از TransactionScope
- خلاصه و جمع بندی
فصل پنجم: استفاده کردن از Pipeline با استفاده از Tracking Event های جدید
- مقدمه
- معرفی دو Event جدید با نامهای Tracked و StateChanged
- ایجاد کردن EventHandler های مربوط به Tracked و StateChanged در DbContext
- بررسی کردن یک Solution در مرحله ابتدایی
- رصد کردن EventHandler ها به صورت عملی
- بررسی برخی دیگر از رفتارهای Event ها در Entity Framework Core
- انتصاب دادن Event ها به Instance های خاص از DbContext
- استفاده از Event ها و ILoggerFactory در .NET Core
- خلاصه و جمع بندی
فصل ششم: انجام Lazy Loading با و بدون Proxy ها
- مقدمه
- بازگشت عملیات Lazy Loading
- راه اندازی فنی
- بررسی نقطه شروع برنامه
- پیاده سازی عملیات Lazy Loading با Proxy ها
- رصد کردن عملیات Lazy Loading در SQL Log ها
- تبدیل Owned Entity Property ها به Virtual در زمان استفاده از Lazy Loading و Proxy ها
- بررسی نکات مهم مربوط به Lazy Loading و Proxy ها
- اجتناب از عملیات Lazy Loading و Proxy ها در برنامههای UWP و Xamarin و Web Application ها
- پیادهسازی Lazy Loading بدون Proxy ها
- فعال سازی عملیات Lazy Loading درEntity ها بدون Proxy ها و Reference ها به Entity Framework Core
- خلاصه و جمع بندی
فصل هفتم: انجام Mapping های بیشتر به Type های .NET و Enum ها با استفاده از Value Conversion ها
- مقدمه
- چرا از Value Conversion ها استفاده کنیم؟
- استفاده از Value Conversion های Built-in
- ذخیره کردن Enum ها در قالب String
- تبدیل کردن Type ها در زمان مورد نیاز
- ایجاد کردن ValueConverter های سفارشی
- جمع بندی
فصل هشتم: انتقال عملیات GroupBy به Server
- مقدمه
- نگاهی به برنامه فعلی
- بررسی یک دستور GroupBy ساده و SQL تولید شده توسط Entity Framework Core 2.0 و Entity Framework Core 2.1
- بررسی کردن الگوهای دیگر جملات GroupBy
- اطلاع داشتن از الگوهای پشتیبانی نشده جملات GroupBy
- جمع بندی
فصل نهم: معرفی Query Type ها برای Data Model های انعطاف پذیرتر
- مقدمه
- فعال کردن الگوهای بیشتر با Query Type ها
- بررسی حالت فعلی برنامه
- انجام Mapping به View های مربوط به دیتابیس
- Handle کردن Query Mapping های غیر پیش فرض
- تعریف کردن Query ها در Data Model
- تعریف کردن SQL Query های خام و از قبل به دست آوردن نتایج FromSql
- جمع بندی
فصل دهم: استفاده از تغییرات کوچک با تاثیرهای بزرگ
- مقدمه
- معرفی کردن یک حد کمینه برای Batched Command ها
- بررسی تغییرات مرتب سازی ستونها و یا Column Ordering
- ساده کردن دسترسی به Entity Framework Core CLI
- دریافت کردن Compiler Warning بر روی جملات خطرناک با استفاده از Code Analyzer درون ساخته
- انجام عملیات Materialize برای Entity ها با توابع سازنده کلاسهایی که پارامترهایی را دارند.
- جمع بندی







