مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

کار با GenenricReository

  • یکشنبه 3 تیر 1397
  • 10:53
تشکر میکنم

سلام 
کلیه کنترل های پروژه 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'.

پاسخ های این پرسش

تعداد پاسخ ها : 6 پاسخ
کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • یکشنبه 3 تیر 1397
  • 15:49

یه سوال دیگه

الان اگه بخواهیم این قسمت از کد که با _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 اینجا میشه استفاده کرد
به چه شکل بنویسم؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 3 تیر 1397
  • 19:47

این لینک رو ببیند

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • سه شنبه 5 تیر 1397
  • 03:15

ممنون 
چه طور میتونم این جستجو با 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 رو داشته باشم ؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • سه شنبه 5 تیر 1397
  • 14:13

من اصلا منظور شما رو متوجه نمیشم 

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • پنجشنبه 7 تیر 1397
  • 11:38

ببیند مثلا در یه کنترلر ، متد 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 ها ؟

کاربر سایت

مهدی الهی

عضویت از 1396/07/29

  • جمعه 8 تیر 1397
  • 16:01
منظورم رو متوجه شدید ؟
کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

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

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)