روش های مختلف Persistence سازی در Entity Framework

واژه ی Persistence به معنی ذخیره سازی داده ها بر روی بانک اطلاعاتی است. به طور کلی دو روش در زمان Persistence سازی داده ها و یا ذخیره کردن Entity ها در بانک اطلاعاتی توسط Entity Framework استفاده می شود: Connected Scenario و Disconnected Scenario. در ابتدا به بررسی روش Connected Scenario می پردازیم.

روش Connected Scenario

در این روش یک شی یکسان از کلاس Context که از کلاس DbContext ارث بری می کند برای بازیابی Entity ها از بانک اطلاعاتی و ذخیره کردن آنها بر روی بانک اطلاعاتی استفاده می شود.


در این روش کلاس Context عملیات Change Tracking را برای تمامی Entity ها در طول چرخه عمر آنها را عهده دار می شود. این روش در ساخت برنامه های Windows Application با یک بانک اطلاعاتی Local یا یک بانک اطلاعاتی در درون شبکه یکسان نسبت به نرم افزار مفید می باشند. در ادامه به بررسی مزایا و معایب این روش می پردازیم.

مزایای روش Connected Scenario

سریع است.

کلاس Context تمامی تغییرات ایجاد شده روی Entity ها را ردگیری (Change Tracking) کرده و به صورت خودکار در زمان ایجاد تغییر بر روی آنها Entity State مناسب برای هر کدام را تنظیم می کند.

معایب روش Connected Scenario

  • کلاس Context همیشه زنده و در درون حافظه موجود می باشد بنابراین اتصال به بانک اطلاعاتی همیشه باز است.
  • منابع را مصرف می‌کنند.

در ادامه به بررسی روش Disconnected Scenario می پردازیم.

روش Disconnected Scenario

در روش Disconnected Scenario از اشیای متفاوتی از کلاس Context برای بازیابی و ذخیره سازی Entity ها بر روی بانک اطلاعاتی استفاده می شوند. به عبارت دیگر یک شی از کلاس Context پس از بازیابی داده ها از بانک اطلاعاتی از حافظه خارج شده و یک شی جدید در زمان ذخیره کردن Entity ها بر روی بانک اطلاعاتی ایجاد میشود. این روش به مراتب از روش Connected Scenario پیچیده تر است چرا که یک شی یکسان از کلاس Context استفاده نشده و تغییراتی که بر روی Entity ها رخ داده است باید به صورت Explicit توسط برنامه نویس در Entity State آن Entity ها لحاظ شود تا متد SaveChanges بتوانند به درستی دستورات مناسبی را برای اعمال تغییرات رخ داده بر روی بانک اطلاعاتی اجرا کند.


در تصویر بالا در ابتدای کار یک شی از کلاس Context با نام Context 1 داده هایی را از بانک اطلاعاتی خوانده و سپس یک شی دیگر از کلاس Context با نام Context 2 تغییراتی را بر روی آنها ایجاد می‌کند. این شی از کلاس Context نمی‌داند که چه تغییراتی بر روی این Entity ها رخ داده است. این روش برای Web Application ها و برنامه هایی که یک بانک اطلاعاتی غیر محلی یا Remote دارند مناسب می باشد. در ادامه به بررسی مزایا و معایب این روش می پردازیم.

مزایا روش Disconnected Scenario

  • منابع کمتری را در مقایسه با روش Connected Scenario مصرف می‌کند.
  • شی Connection مربوط به Entity Framework همیشه باز نیست.

معایب روش Disconnected Scenario

  • باید Entity State هر کدام از Entity ها قبل از فراخوانی متد SaveChanges به طور Explicit تنظیم شود.
  • سرعت کمتری نسبت به روش Connected Scenario دارد.


پرووید: مرکز آموزش تخصصی برنامه نویسی و توسعه نرم افزار