Редактировать запись в многослойном MVC

У меня есть проект с 8 слоями, я хочу отредактировать запись; например: На уровне репозитория: 1: в IRepository: IEnumerable GetArea (int id);

    void Edit(CRM_Area crm); 

2: в репозитории:

public IEnumerable<CRM_Area> GetArea(int ID)
        {
           return _db.CrmAreas.Where(x=>x.ID==ID);
        }

        public void Edit(CRM_Area crmArea)
        {
            _db.Entry(crmArea).State=EntityState.Modified;
        }

и в уровне услуг: 1: в Iservices:

void Delete(int ID);
        IEnumerable<_CRM_AreaList> GetArea(int ID);  

        void Edit(_CRM_AreaEdit crmArea); 

2: в Службах:

public IEnumerable<_CRM_AreaList> GetArea(int ID)
       {
           return _areaRepository.GetArea(ID).Select(Mapper.Map<CRM_Area, _CRM_AreaList>);
       }


           public void Edit(_CRM_AreaEdit crmAreaEdit)
           {
               var editArea = Mapper.Map<_CRM_AreaEdit, CRM_Area>(crmAreaEdit);
               _areaRepository.Edit(editArea);

           }

и в веб-слое в контроллере:

[HttpGet] public ActionResult Edit (int ID) {

        return View(_areaServices.GetArea(ID));
    }

    [HttpPost]
    public ActionResult Edit(_CRM_AreaEdit crmAreaEdit)
    {
        _areaServices.Edit(crmAreaEdit);
        return RedirectToAction("List");
    }

Но это не работает. Пожалуйста, помогите мне - как я могу отредактировать и в чем моя ошибка? Когда я нажимаю на редактирование, элемент модели, переданный в словарь, имеет тип 'System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [CRM.Web.Models.CRM_Area, CRM.Web.ViewModel.Area._CRM_AreaList]', но этот словарь требуется элемент модели типа "CRM.Web.ViewModel.Area._CRM_AreaEdit".


person Navid Salajegheh    schedule 09.10.2014    source источник


Ответы (1)


В вашем репозитории попробуйте сохранить изменения. Всегда имейте в виду, вам необходимо сохранить изменения после редактирования.

public void Edit(CRM_Area crmArea)
{
    _db.Entry(crmArea).State=EntityState.Modified;
    _db.SaveChanges();
}
person Cybercop    schedule 09.10.2014
comment
спасибо, но моя ошибка не прошла: элемент модели, переданный в словарь, имеет тип 'System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [CRM.Web.Models.CRM_Area, CRM.Web.ViewModel.Area._CRM_AreaList]', но для этого словаря требуется элемент модели типа «CRM.Web.ViewModel.Area._CRM_AreaEdit». - person Navid Salajegheh; 09.10.2014