• تهرانپارس ، خ شهید محمود آمینه بزرگراه رسالت، پلاک 213، طبقه2، واحد7

  • 021-77295097 0912-8099518

  • شنبه تا پنجشنبه۹ صبح تا ۶ بعد از ظهر

آموزش DbContext

کلاس DbContext بخشی جدایی ناپذیر از Entity Framework است و اولین کلاسی هست که ما در EF Core با آن سر و کار داریم. نمونه ای از کلاس DbContext یک جلسه با بانک اطلاعاتی را نشان می دهد که می تواند برای جستجو و ذخیره موارد موجود در یک پایگاه داده استفاده شود. DbContext ترکیبی از Unit of Work و الگوی Repository است.

DbContext در حقیقت کلاسی هست که به عنوان یک واحد کاری در اختیار شما قرار می گیرد و به شما امکان

مدیریت Database Connection

پیکربندی Model و Relationship ها

گرفتن Query از دیتابیس

قابلیت Change Tracking

توانایی استفاده از قابلیت کش (Chahing)

و مدیریت تراکنش ها را می دهد.

DbContext

در تصویر بالا، زیر ساخت نگاشت های EF Core را مشاهده می کنید. در سمت چپ، ظرفی را داریم به نام DB Context که در برگیرنده ی DbSetها است. در سمت راست که بیانگر ساختار کلی یک بانک اطلاعاتی است، معادل این ها را مشاهده می کنیم. هر DbSet به یک جدول بانک اطلاعاتی map خواهد شد و متشکل است از کلاسی به همراه یک سری Property که Property ها نیز به فیلدها و ستون های آن جدول در سمت بانک اطلاعاتی map می شوند.

برای استفاده از DbContext در برنامه، باید یک کلاس ایجاد کنیم که از DbContext مشتق شده است و به کلاس Context معروف است. این کلاس Context به طور معمول شامل پراپرتی های <DbSet <TEntity برای هر Entity موجود در مدل است. هنگام ساختن یک نمونه از کلاس مشتق شده از DbContext، تمامی DbSet ها شناسایی و پردازش می شوند تا Entity ها به جداول بانک اطلاعاتی Map شوند. عملیات Mapping به صورت خودکار انجام می شود که می توان از طریق متد OnModelCreating که یک متد Virtual هست، تغییرات دلخواه در مورد Mapping را اعمال کرد.

نمونه ای از کلاس Context در EF Core

آموزش DbContext

در مثال بالا ، کلاس SchoolContext از کلاس DbContext ارث بری کرده است و حاوی خصوصیات <DbSet<TEntity از نوع Student و Course است. این کلاس همچنین متدهای OnConfiguring و OnModelCreating را بازنویسی کرده است. برای اتصال به پایگاه داده و ذخیره یا بازیابی اطلاعات Student یا Course باید نمونه ای از کلاس SchoolContext ایجاد کنیم.

متد OnConfiguring به ما اجازه می دهد تا منبع داده را با استفاده از DbContextOptionsBuilder انتخاب و پیکربندی کنیم. در این بخش به چگونگی پیکربندی یک کلاس DbContext می پردازیم.

متد OnModelCreating به ما امکان پیکربندی مدل را با استفاده از ModelBuilder Fluent API می دهد.

متدهای DbContext

متد

مورد استفاده

Add

یک Entity جدید را با وضعیت Added به DbContext اضافه می کند و شروع به ردیابی آن می کند. این entity وقتی متد SaveChanges () فراخوانی می شود در دیتابیس وارد می شود.

AddAsync

متد ناهمگامی برای اضافه کردن یک موجودیت جدید به DbContext با حالت اضافه شده و ردیابی آن شروع می شود. وقتی فراخوانی SaveChangesAsync () فراخوانی می شود ، این داده جدید موجود در دیتابیس وارد می شود.

AddRange

یک مجموعه Entity جدید را با وضعیت Added به DbContext اضافه می کند و شروع به ردیابی آن ها می کند. این entity وقتی متد SaveChanges () فراخوانی می شود در دیتابیس وارد می شود.

AddRangeAsync

یک متد ناهمزمان برای اضافه کردن مجموعه ای از Entityهای جدید که هنگام فراخوانی متد SaveChangesAsync() ذخیره می شوند.

Attach

یک موجود جدید یا از قبل موجود را با وضعیت Unchanged به DbContext وصل کرده و ردیابی آن را شروع می کند.

AttachRange

مجموعه ای از Entityهای جدید یا از قبل موجود را با وضعیت Unchanged به DbContext وصل می کند و ردیابی آن ها را شروع می کند.

Entry

یک EntityEntry برای Entity داده شده دریافت می کند. این ورودی امکان ردیابی اطلاعات و عملیاتی برای Entity فراهم می کند.

Find

یک Entity را با مقدار primary key داده شده پیدا می کند.

FindAsync

یک متد ناهمزمان برای پیدا کردن یک Entity با مقدار primary key داده شده.

Remove

وضعیت Deleted را به Entity مشخص شده تنظیم می کند که هنگام فراخوانی متد SaveChanges () ، داده را حذف می کند.

RemoveRange

وضعیت Deleted را به مجموعه ای از Entityها تنظیم می کند که هنگام فراخوانی متدSaveChanges () ، داده ها را در یک گردش دور DB حذف می کنند.

SaveChanges

دستورINSERT ، UPDATE یا DELETE را برای دیتابیس برای Entityهایی با وضعیت Added، Modified یا Deleted اجرا می کند.

Set

یک DbSet <TEntity> ایجاد می کند که می تواند برای جستجو و ذخیره نمونه های Tentity استفاده شود.

Update

Entity با حالت جدا شده را به وضعیت Modified برده و ردیابی آن را شروع می کند. هنگام فراخوانی متد SaveChagnes () داده ها ذخیره می شوند.

UpdateRange

مجموعه ای از Entityهای جدا شده را به وضعیت Modified برده و ردیابی آن ها را شروع می کند. هنگام فراخوانی متد SaveChagnes () داده ها ذخیره می شوند.

OnConfiguring

این متد را برای پیکربندی دیتابیس بازنویسی کنید. متد onConfiguring برای هر نمونه ای که از context ایجاد می شود صدا زده می شود.

OnModelCreating

این متد را برای پیکربندی بیشتر مدل که از قراردادهای انواع entity های ظاهر شده در پراپرتی DbSet<TEntity> کشف شده بازنویسی کنید.