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

آموزش DbContext در EF Core

دوره های مرتبط با این مقاله

آموزش DbContext در EF Core

کلاس DbContext نقشی اساسی در Entity Framework دارد. یک instance از DbContext نشاندهنده یک session با دیتابیس است که برای query زدن و ذخیره instance های entity های موجود در دیتابیس استفاده می شود. DbContext ترکیبی از Unit Of Work و Repository pattern است.

DbContext در EF Core به ما امکان انجام کارهای زیر را می دهد:


  • مدیریت ارتباط با دیتابیس
  • Config مدل و ارتباط ها
  • Query زدن روی دیتابیس
  • ذخیره دیتا در دیتابیس
  • Config کردن change tracking
  • Caching
  • مدیریت Transaction ها

برای استفاده از DbContext در برنامه مان، باید کلاسی داشته باشیم که از DbContext ارث بری کند. این context class معمولا حاوی DbSet< TEntity>property هایی برای هر مدل است. مثال زیر از یک context class در EF Core را در نظر بگیرید:


public class SchoolContext : DbContext
{
    public SchoolContext()
    {
  
    }
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
    }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
    }
    //entities
    public DbSet< Student > Students { get; set; }
    public DbSet< Course > Courses { get; set; }
} 

در مثال بالا، کلاس SchoolContext از DbContext ارث بری کرده و DbSet< TEntity> property هایی از نوع Student و Course دارد. همچنین متدهای OnConfiguring و OnModelCreating را override می کند. باید یک instance از SchoolContext بسازیم تا بتوانیم به دیتابیس وصل شویم . دیتای مربوط به Student یا Course را ذخیره و بازیابی کنیم.

متد OnConfiguring() امکان انتخاب و config کردن data source مورد استفاده با context را با استفاده از DbContextOptionsBuilder می دهد.

متد OnModelCreating() امکان config کردن مدل با استفاده از ModelBuilderFluent API می دهد.

ساخت مدل برای یک دیتابیس در Entity Framework Core
متد
موارد استفاده
Add
یک entity جدید با Added state به DbContext اضافه می کند و شروع به track آن می کند. این entity جدید هنگام فراخوانی متد SaveChanges() به دیتابیس insert می شود.
AddAsync
به شیوه ی async، entity جدید با Added state به DbContext اضافه می کند و شروع به track آن می کند. این entity جدید هنگام فراخوانی متد SaveChanges() به دیتابیس insert می شود.
AddRange
مجموعه ای از entity های جدید را با Added state به DbContext اضافه می کند و شروع به track آن ها می کند. این entity های جدید هنگام فراخوانی متد SaveChanges() به دیتابیس insert می شوند.
AddRangeAsync
به شیوه ی async، مجموعه ای از entity های جدید را با Added state به DbContext اضافه می کند و شروع به track آن ها می کند. این entity های جدید هنگام فراخوانی متد SaveChanges() به دیتابیس insert می شوند.
Attach
یک entity جدید یا موجود را با Unchanged state به DbContext، Attach می کند و شروع به track آن می کند.
AttachRange
دسته ای entity جدید یا موجود را با Unchanged state به DbContext، Attach می کند و شروع به track آن می کند.
Entry
یک EntityEntry برای entity داده شده می گیرد. این entry امکان دسترسی به اطلاعات و عملیات change tracking برای آن entity را می دهد.
Find
entity با مقادیر کلید اصلی داده شده را پیدا می کند.
FindAsync
به شیوه ی async،entity با مقادیر کلید اصلی داده شده را پیدا ی کند.
Remove
به entity مشخص شده Deleted state می دهد و دیتای مربوطه را هنگام فراخوانی SaveChanges() پاک می کند.
RemoveRange
به دستهentity های مشخص شده Deleted state می دهد و دیتای مربوطه را هنگام فراخوانی SaveChanges() ، در یک round trip به دیتابیس پاک می کند.
SaveChanges
برای entity های دارای یکی از state های Added، Modified و Deleted ، دستورات INSERT، UPDATE و DELETE را روی دیتابیس اجرا می کند.
SaveChangesAsync
متد SaveChanges() را صورت async اجرا می کند
Set
یک DbSet< TEntity> می سازد که برای query زدن و ذخیره instance های TEntity استفاده می شود.
Update
Entity را با Modified state، Attach می کند و شروع به track آن می کند. دیتا پس از فراخوانی SaveChanges() ذخیره می شود.
UpdateRange
دسته ای Entity را با Modified state، Attach می کند و شروع به track آن ها می کند. دیتا پس از فراخوانی SaveChanges() ذخیره می شود.
OnConfiguring
این متد را برای config کردن دیتابیس مورد استفاده برای context، override کنید. این متد موقع ساخته شدن یک instance از context ، فراخوانی می شود.
OnModelCreating
این متد را برای config مدلی که توسط DbSet< TEntity> property ها تعریف کرده اید، استفاده کنید.

DbContext Properties
متد
مورد استفاده
ChangeTracker
به اطلاعات و عملیات ها روی نمونه های entity که این context، اصطلاحا track می کند دسترسی می دهد.
Database
به اطلاعات و عملیات های مربوط به دیتابیس دسترسی می دهد.
Model
Metadata مربوط به شکل entity ها، ارتباطات بین آن ها و چگونگی نگاشت آن ها به دیتابیس را برمی گرداند.

در بخش بعد مراحل ساخت یک EF Core console application ساده آموزش می دهیم.

  • 40
  •    0
  • تاریخ ارسال :   1398/06/13

دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

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

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .