این مقاله به بررسی مدل نگارش در یک ارائهدهنده حافظه داخلی سفارشی در .NET میپردازد. در این مدل، EF Core تغییرات را بلافاصله در پایگاه داده اعمال نمیکند، بلکه آنها را در ChangeTracker داخلی خود ردیابی میکند و وضعیت هر موجودیت را با استفاده از EntityState مشخص میکند.
SaveChanges() زمانی فراخوانی میشود که EF Core تمام تغییرات معلق را از ChangeTracker جمعآوری کرده، آنها را به لیستی از IUpdateEntry تبدیل کرده و این لیست را از طریق متد SaveChanges در کلاس CustomMemoryEfDatabase به ارائهدهنده ارسال میکند. در این نقطه، کنترل از EF Core به ارائهدهنده منتقل میشود.
در ارائهدهنده حافظه داخلی سفارشی، کلاس CustomMemoryEfDatabase لیست entries را دریافت کرده و برای هر entry، وضعیت EntityState را بررسی میکند و موجودیت را به عملیات سطح جدول مناسب (Add، Update یا Remove) هدایت میکند. پس از پردازش تمام entries، ارائهدهنده تغییرات معلق جدول را با فراخوانی IMemoryDatabase.SaveChanges() به حافظه ذخیره میکند.
در مورد بازیابی مبتنی بر کلید (Find)، این عملیات صرفاً یک جستجوی دیکشنری نیست، بلکه به عنوان پلی کنترلشده بین لایه ذخیرهسازی و سیستم ردیابی EF Core عمل میکند. این عملیات شامل دو مرحله مفهومی است: ابتدا، EF Core موجودیت را از حافظه بازیابی میکند و سپس ارائهدهنده آن را در حافظه ذخیره میکند.
مشاهده مطلب اصلی