سلام
کلیه کنترل های پروژه Mvc رو وصل کردم به Repository ولی با Async و Await رفتم ولی کلیه عملیات ها کار می کننه Insert, Delete, و ... به جز Details این ارور رو نشون میده علتش چیه ؟
Repository
public async Task<T> GetByIdAsync(object Id) { return await _dbContext.Set<T>().FindAsync(Id); }
Controller
public async Task<IActionResult> Details(int? id) { if (id == null) { return NotFound(); } var cmsFeature = await _genericRepository.GetByIdAsync(id); if (cmsFeature == null) { return NotFound(); } return View(cmsFeature); }
اررو
The model item passed into the ViewDataDictionary is of type 'System.Threading.Tasks.Task`1[Project_Management.Models.CmsFeature]', but this ViewDataDictionary instance requires a model item of type 'Project_Management.Models.CmsFeature'.
یه سوال دیگه
الان اگه بخواهیم این قسمت از کد که با _context رفته رو با GenricRepository برم چه متدی باید داخل آن نوشت و از آن در کنترلر استفاده کرد؟
public async Task<IActionResult> Details(int? id) { if (id == null) { return NotFound(); } //این قسمت var projectCmsFeature = await _context.ProjectCmsFeature .Include(p => p.ProjectFeature) .Include(p => p.Team) .SingleOrDefaultAsync(m => m.CmsFeature_Id == id); if (projectCmsFeature == null) { return NotFound(); } return View(projectCmsFeature); }
چون Include و FitstOrDefult اینجا میشه استفاده کرد
به چه شکل بنویسم؟
این لینک رو ببیند
ممنون
چه طور میتونم این جستجو با Id و همراه Includes می باشد رو داخل GenericRepository بنویسم و اینجا استفاده کنم ؟
var projectCmsFeature = await _context.ProjectCmsFeature .Include(p => p.ProjectFeature) .Include(p => p.Team) .SingleOrDefaultAsync(m => m.CmsFeature_Id == id);
چه متدی بنویسم در GenericRepositoryتا بتونم هم Id و Includes رو داشته باشم ؟
من اصلا منظور شما رو متوجه نمیشم
ببیند مثلا در یه کنترلر ، متد Create برای مثال در GenericRepository به این صورت نوشتیم و از اون استفاده کردیم
public void Add(T entity) { _dbContext.Set<T>().AddAsync(entity); }
خب حالا میخوام این متد در کنترلر رو کلاس GenericRepository بنویسم
public async Task<IActionResult> Details(string id) { if (id == null) { return NotFound(); } var userTeam = await _context.UserTeams .Include(u => u.ApplicationRole) .SingleOrDefaultAsync(m => m.Role_Id == id); if (userTeam == null) { return NotFound(); } return View(userTeam); }
ولی نمیدونم به چه صورت بنویسم ، شما Include هارو در GenericRepository برای متد Get گفتید ولی اینجا تفاوتی که داره اینه یه Id هم دنبالشه نمودنم چه طور این Id رو اعمال کنم به Includes ها ؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)