سلام
در کنترلر ProductController ما یک کنترلر با چند Action داریم که به ازای اکشنها هم view ساخته ایم
اگر در view ای که به کاربر نمایش داده میشود کاربر گزینه پیش فرض یا Index را وقتی خواست مشاهده کند دستورات Action مربوط به Index در ProductController باید اجزار شوند
همه ی داده هایی که بین کنترلر , Viewها ردو بدل میشوند از طریق مدلها هستند پس طبیعتا با مدلها سرو کار داریم و وقتی صحبت از مدلها میشود یعنی با ProductServiceها سرو کار داریم:
public IActionResult Index() { var model = _productService.FindAllAsync().Result; return View(model); }
در کد بالا از طریق _productService به متد FindAllSync دسترسی پیدا میکنیم و در این متد هم به Productcoreserviceها دسترسی پیدا میکنیم و یعنی از این به بعد دسترسی پیدا کردیم به متدهای مربوط به Entity ها
public async Task<List> FindAllAsync() { return _productCoreService.GetAll().ToList().ToListModel(); }
حالا در کلاس Productcoreservice چون از Baseservice ارث بری کرده است الان میتوانیم متد GetAll() را فراخوانی کنیم
public virtual IEnumerable GetAll() { return _repository.GetAll(); }
متد GetAll در Productcoreservice هم به یک object از IRepository دسترسی دارد که آنجا هم یک متد GetAll وجود دارد و در نهایت پیاده سازی آن دستور هم در کلاس EfRepository hsj ودستور زیر اجرا میشود:
public virtual IEnumerable GetAll() { try { return Entities.ToList(); } catch (DbUpdateException exception) { throw new Exception(GetFullErrorTextAndRollbackEntityChanges(exception), exception); } }
سوال اول :آیا تحلیل به درستی صورت گرفته و یا دارای اشتباهی است؟
سوال دوم: قطعه کد آخر چه کاری انجام میدهد؟ و در Entities که یک نمونه از Dbset است چه میکند و چرا تبدیل به ToList میکنیم روی نمدونم