8c78
لینک کوتاه https://codecell.ir/course/8c78
مدرس: سهراب قیصری
تعداد ویدیوها: 8
مدت زمان دوره: 01:43:43
وضعیت دوره: به اتمام رسیده
آخرین بروزرسانی: 1401/03/18
به اشتراک گذاری
نظرات
2
دیگر آموزش های مدرس:
دوره جامع آموزش Fluent API در EF Core

Fluent API چیست؟

در روش کد فرست یا Code First بصورت پیش فرض کلاس ها با استفاده از مجموعه ای از قراردادهای گنجانده شده در EF به جداول نگاشت می شود. به طور مثال بصورت پیش فرض در روش کد فرست در EF Core یک پراپرتی از نوع string به varchar(MAX) در دیتابیس نگاشت می شود.با این حال، گاهی اوقات نمی‌توانیم یا نمی‌خواهیم از آن قراردادها پیروی کنیم و نیاز داریم که موجودیت‌ها را به چیزی غیر از آنچه که قراردادها دیکته می‌کنند، نگاشت کنیم.

برای آموزش کد فرست در EF Core می توانید از این لینک استفاده کنید.

برای این که در EF Core موجودیت ها را به چیزی غیر از قراردادهای پیش فرض نگاشت کنیم دو راه وجود دارد:

چرا در روش کد فرست نباید از annotation ها در EF Core استفاده کنیم؟

  • استفاده از annotation ها باعث کثیفی کد خواهند شد
  • استفاده از annotation ها خوانایی کد را پایین می آورد
  • استفاده از annotation ها توسعه و نگه داری کد را سخت خواهد کرد

چرا در روش کد فرست باید از Fluent API در EF Core استفاده کنیم؟

  • استفاده از Fluent API ها خوانایی کد را بالا می برد
  • استفاده از Fluent API ها باعث تسریع روند پروژه خواهد شد
  • استفاده از Fluent API ها توسعه و نگه داری کد را آسان می کند
  • انواع سناریوهای نگاشت را می توان با Fluent API انجام داد

به طور کل annotation ها فقط زیرمجموعه ای از عملکرد Fluent Api را پوشش می دهند، بنابراین سناریوهای نگاشتی وجود دارد که با استفاده از annotation نمی توان به آنها دست یافت که این سناریو ها باید با Fluent Api ها نگاشت شوند.

نحوه ایجاد و نگاشت مدل در EF Core با استفاده از کلاس ModelBuilder

Entity Framework Core از مجموعه ای از قراردادها برای ساخت مدلی بر اساس ساختار کلاس های ما استفاده می کند. Fluent API از کلاس ModelBuilder می تواند پیکربندی های اضافی را برای تکمیل یا نادیده گرفتن آنچه بر اساس قرارداد های پیش فرض در EF Core است،اعمال کند.

استفاده از Fluent API برای نگاشت یک مدل

برای استفاده از Fluent API باید متد OnModelCreating را override و از ModelBuilder API برای نگاشت مدل خود استفاده کنیم. Fluent API قوی ترین روش نگاشت است و اجازه می دهد تا پیکربندی بدون تغییر کلاس های موجودیت مشخص شود. پیکربندی Fluent API بالاترین اولویت را دارد و Annotation را لغو می کند.

using Microsoft.EntityFrameworkCore;

namespace EFModeling.EntityProperties.FluentAPI.Required;

internal class MyContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }

    #region Required
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Blog>()
            .Property(b => b.Url)
            .IsRequired();
    }
    #endregion
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
}

نگاشت گروهی در EF Core

برای کاهش اندازه متد OnModelCreating، می توان تمام پیکربندی یک موجودیت را  در یک کلاس جداگانه که اینترفیس IEntityTypeConfiguration<TEntity> را پیاده سازی کرده است استخراج کرد.

public class BlogEntityTypeConfiguration : IEntityTypeConfiguration<Blog>
{
    public void Configure(EntityTypeBuilder<Blog> builder)
    {
        builder
            .Property(b => b.Url)
            .IsRequired();
    }
}

سپس می توان تمام پیکربندی های مشخص شده که اینترفیس IEntityTypeConfiguration را در یک اسمبلی مشخص پیاده سازی کرده اند را اعمال کرد.

 protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.ApplyConfigurationsFromAssembly(typeof(BlogEntityTypeConfiguration).Assembly);
    }

آموزش Fluent API در EF Core و Asp.Net Core

ما در این آموزش در یک پروژه MVC از نوع asp core 6 خواهیم ساخت و سپس با روش کد فرست در EF Core یک دیتابیس خواهیم ساخت و برای نگاشت entity های خود به جداول SQL از Fluent API استفاده خواهیم کرد.

سر فصل های آموزش Fluent API در EF Core در روش کد فرست

  • نحوه ایجاد یک Fluent API و آشنایی با ساختار آن
  • نگاشت گروهی موجودیت ها در  Fluent API
  • بررسی انواع متدهای Fluent API و کاربردهای آن
  • نحوه اعمال کردن ایندکس ها بوسیله  Fluent API
  • ایجاد رابطه یک به یک(One-to- One) با استفاده از Fluent APi
  • ایجاد رابطه یک به چند(One-to-Many) با استفاده از Fluent APi
  • ایجاد رابطه چند  به چند(Many -to-Many) با استفاده از Fluent APi
  • ایجاد رابطه Self Relation یا Self-Referencing با استفاده از Fluent API
  • انجام Seed Data در Fluent API
  • آشنایی با مفهوم Principal key و کاربرد آن در EF Core

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

فهرست ویدیوها
مدت زمان دوره: 01:43:43
01

استفاده از Fluent API در EF Core و Asp.net Core 6

00:14:03
02

نگاشت گروهی موجودیت ها و بررسی انواع متدهای Fluent API در EF Core

00:25:51
03

ایجاد رابطه یک به یک(One-To-One) با استفاده از Fluent API در EF Core

00:10:25
04

ایجاد رابطه یک به چند(One-To-Many) با استفاده از Fluent API در EF Core

00:11:10
05

ایجاد رابطه چند به چند(Many-To-Many) با استفاده از Fluent API در EF Core

00:12:02
06

ایجاد رابطه Self Relation یا Self-Referencing با استفاده از Fluent API در EF Core

00:07:15
07

انجام عملیات Seed Data با استفاده از Fluent API در EF Core

00:08:31
08

مفهوم و نحوه استفاده از Principal key در Fluent API و EF Core

00:14:26

پرسش های متداول

Fluent API در EF Core قوی ترین روش نگاشت یا مپ کلاس های ما به  دیتابیس بدون تغییر کلاس های موجودیت است. با Fluent API می توان موجودیت‌ها را به چیزی غیر از آنچه که قراردادهای پیش فرض دیکته می‌کنند نگاشت کنیم.

کد فرست یا Code First تکنیکی است که به ما کمک می کند تا از طریق کد و مایگریشن یک دیتابیس را ایجاد و جداول آن را کانفیگ و نگهداری کنیم.

  • خوانایی کد را بالا می برد
  • باعث تسریع روند پروژه خواهد شد
  • توسعه و نگه داری کد را آسان می کند

EF Core یک نسخه سبک، قابل توسعه، منبع باز و چند پلتفرمی از فناوری محبوب دسترسی به داده Entity Framework است.

مقالات آموزش برنامه نویسی مدرس

Response Caching در ASP.NET Core

Response Caching یک مکانیزم ذخیره سازی پاسخ سرور توسط مرورگر یا سایر کلاینت ها است. با استفاده از Response Caching در Asp.net Core می توانیم عملکرد و کارایی سیستم را بالا ببریم.

632 0 1402/10/22

Output Caching در ASP.NET Core 8.0

Output Caching یک ویژگی جدید است که از زمان .NET 7 معرفی شده است. این ویژگی به ما این امکان را می دهد که به راحتی یک کش پاسخ برای Web API خود بدون پیاده سازی IMemoryCache راه اندازی کنیم.

694 0 1402/10/14

الگوی طراحی زنجیره مسئولیت در سی شارپ

الگوی زنجیره مسئولیت یا Chain of Responsibility Design Pattern یک الگوی طراحی رفتاری(behavioral design pattern) است که اجازه می‌دهد یک درخواست در امتداد زنجیره‌ای از کنترل‌کننده‌های بالقوه ارسال شود تا زمانی که درخواست مناسب برای پردازش آن را پیدا کند.

646 2 1402/10/01

ViewComponent در ASP.NET Core

در ASP.NET Core با استفاده از ViewComponent ها می توان اجزای ماژولار، قابل استفاده مجدد، قابل نگهداری و مقیاس پذیر برای ساخت برنامه های کاربردی وب ایجاد کرد. در این مقاله به نحوه ایجاد و فراخوانی ViewComponent در Asp.net core پرداخته ایم.

1٬359 2 1402/05/15

تطبیق الگو در NET 7: ساده سازی تجزیه و تحلیل داده ها

تطبیق الگو یا Pattern Matching در net7 یک تکنیک قدرتمند برای تجزیه و تحلیل و دستکاری داده ها بر اساس ساختار آن ها است. تطبیق الگو یا Pattern Matching به توسعه دهندگان اجازه می دهد تا مقادیر را با یک الگوی خاص مطابقت دهند و اقدامات مربوطه را انجام دهند.

821 1 1402/04/05

تزریق وابستگی در ASP.NET Core

تزریق وابستگی (DI) یک الگوی طراحی نرم افزاری است که امکان ایجاد برنامه های کاربردی و ماژولار را فراهم می کند.. در .NET Core تزریق وابستگی یا Dependency injection یک ویژگی مهم است که می تواند برای ساده سازی توسعه برنامه، بهبود تست پذیری و کاهش پیچیدگی کد مورد استفاده قرار گیرد.

1٬875 1 1402/02/04

ضروری ترین کتابخانه های NuGet برای ASP.NET Core

در این مقاله مهمترین،ضروری ترین و پرکاربردترین کتابخانه های NuGet که هر توسعه‌ دهنده‌ ASP.NET Core باید برای توسعه بهتر و کاهش زمان مورد نیاز برای برنامه ‌های خود از آن استفاده کنند را مورد بررسی قرار داده ایم.

1٬476 1 1401/12/29

الگوی طراحی Factory در سی شارپ

الگوهای طراحی یکی از مهمترین جنبه های طراحی و معماری نرم افزار است. Factory Method یک الگوی طراحی ایجادی است که یک رابط برای ایجاد اشیاء در یک سوپر کلاس فراهم می‌کند. ما در این مقاله الگوی Factory Method Design در سی شارپ را بررسی می کنیم.

1٬576 1 1401/10/28

مقایسه List و Array در سی شارپ

آرایه و لیست در سی شارپ هر دو به عنوان مجموعه ای از مقادیر عمل می کنند، اما در نحوه ذخیره محتوای خود در حافظه و نحوه دسترسی به آنها متفاوت هستند. در این مقاله Benchmark و کارایی List<T> با سایز داینامیک، List<T> با سایز ثابت و Array ها را بررسی می کنیم.

2٬157 2 1401/09/01

LinkedList در سی شارپ

LinkedList یا لیست پیوندی در سی شارپ یک ساختار داده خطی است که عنصر را در مکان غیر پیوسته ذخیره می کند. LinkedList شامل گره هایی است که هر گره حاوی یک فیلد داده و یک مرجع (پیوند) به گره بعدی در لیست است. در سی شارپ، LinkedList یا لیست پیوندی یک نوع مجموعه جنریک است.

1٬946 0 1401/08/13

Garbage Collection در دات نت

به طور کلی، Garbage Collection (GC) یا جمع آوری زباله در .Net چیزی نیست جز به دست آوردن مجدد حافظه اختصاص داده شده به اشیایی که در حال حاضر در هیچ بخشی از برنامه ما استفاده نمی شوند. ما در این مقاله Garbage Collection را در سی شارپ بررسی خواهیم کرد.

2٬767 4 1401/03/30

.NET Core چیست؟

.Net (با تلفظ «دات نت») یک چارچوب نرم افزاری کامپیوتری مدیریت شده رایگان و منبع باز برای سیستم عامل های ویندوز، لینوکس و macOS است. این پروژه در درجه اول توسط کارمندان مایکروسافت از طریق دات نت توسعه یافته و تحت مجوز MIT منتشر شده است.

2٬532 2 1401/03/16

پشته(Stack) در سی شارپ

پشته یا Stack در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. پشته یک ساختار داده LIFO یا Last-In-First-Out است، به این معنی که آخرین موردی که در پشته قرار می گیرد اولین موردی است که از پشته خارج می شود.

2٬122 0 1401/03/09

صف (Queue) در سی شارپ

صف (Queue) در سی شارپ یک نوع خطی از ساختار داده است که قادر به ذخیره اشیاء است. Queue یک ساختار داده first-in-first-out یا FIFO است که به این معنی است که اولین مورد اضافه شده به صف اولین موردی است که حذف می شود.

2٬109 0 1401/02/30

تفاوت Hashtable و Dictionary در سی شارپ

در سی شارپ از Hashtable و Dictionary می توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. با این تفاوت که Hashtable و Dictionary عناصر را به عنوان جفت Key/Value ذخیره می کنند.در این مقاله به تفاوت های Hashtable و Dictionary پرداخته شده است.

1٬801 1 1401/02/23

Dictionary در سی شارپ

در سی شارپ از دیکشنری ها (Dictionary) می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Dictionary می تواند عناصر را به عنوان جفت Key/Value ذخیره کند.Key ها باید منحصر به فرد و نمی توانند null باشند. Value ها می توانند تکراری یا null باشند.

2٬203 3 1401/02/17

Hashtable در سی شارپ

از Hashtable می‌توان برای ذخیره مجموعه‌ای از داده‌ها، شبیه به List معمولی استفاده کرد. تفاوت اصلی این است که یک Hashtable می تواند عناصر را به عنوان جفت Key/Value به عنوان جایگزینی برای استفاده از Index ذخیره کند.

1٬673 5 1401/02/14

Redirect درخواست (ریدایرکت) در asp.net core

در برنامه های ASP.NET Core برای تغییر مسیر(ریدایرکت) و Redirect به یک URL خاص روش های مختلفی وجود دارد. در این مقاله با این تکنیک ها و کدهای مورد نیاز برای تغییر مسیر یک درخواست در ASP.NET Core آشنا می شویم.

2٬485 5 1401/02/12

تبدیل enum به لیست انتخابی در asp.net core

در این آموزش ما بوسیله Reflection ها در سی شارپ و asp.net core یک enum را به لیست انتخابی یا SelectListItem تبدیل خواهیم کرد و بوسیله تگ select در بوت استرپ 5 نمایش می دهیم.

1٬726 3 1401/02/03

نحوه ارسال ایمیل در asp و c#

امروزه ارسال ایمیل به امری ضروری در پروژه های وب تبدیل شده است.از ارسال ایمیل در asp می توان در بخش های تایید حساب کاربری،بازیابی رمز عبور،ایمیل مارکتینگ،ارسال خبرنامه و ... استفاده نمود.در این آموزش نحوه ارسال ایمیل در asp core و سی شارپ پیاده سازی گردیده است.

2٬503 5 1401/02/03
نظرات

برای ثبت نظر باید در سایت ثبت نام یا ورود نمایید