2013-06-10 3 views
0

Im learning MVC 4. Я создал первый проект базы данных с использованием EF5. В моем представлении редактирования я хочу добавить номер продукта клиенту. Когда я ударил, я получаю сообщение ниже. Я думаю, что это потому, что номер продукта равен нулю в таблице продуктов, поэтому он не может обновляться. Могу ли я обойти это? Я добавил мой редактировать контрольЗаявление об обновлении, вставке или удалении магазина

public ActionResult Edit(int id = 0) 
    { 
     UserProfile userprofile = db.UserProfiles.Find(id); 
     if (userprofile == null) 
     { 
      return HttpNotFound(); 
     } 
     //ViewBag.userId = new SelectList(db.Devices, "DeviceID", "DeviceIMEI", userprofile.UserId);THIS CREATES A NEW ENTRY IN USERPROFILE TABLE 

      ViewBag.Device_DeviceID = new SelectList(db.Devices, "DeviceID", "DeviceIMEI", userprofile.Device); 
      ViewBag.ShippingDetails_ShippingDetailsID = new SelectList(db.ShippingDetails, "ShippingDetailsID", "Address1", userprofile.ShippingDetails_ShippingDetailsID); 
      return View(userprofile); 

    } 

    // 
    // POST: /User/Edit/5 

    [HttpPost] 
    public ActionResult Edit(UserProfile userprofile) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Entry(userprofile).State = EntityState.Modified; 
      db.SaveChanges(); 

      return RedirectToAction("Index"); 
     } 
     //ViewBag.userId = new SelectList(db.Devices, "DeviceID", "DeviceIMEI", userprofile.UserId); 
     ViewBag.Device_DeviceID = new SelectList(db.Devices, "DeviceID", "DeviceIMEI", userprofile.Device); 
     ViewBag.ShippingDetails_ShippingDetailsID = new SelectList(db.ShippingDetails, "ShippingDetailsID", "Address1", userprofile.ShippingDetails_ShippingDetailsID); 
     return View(userprofile); 
    } 

«обновить магазин, вставить или удалить заявление повлияло неожиданное количество строк (0). Объекты могут быть изменены или удалены, так как были загружены объекты. Refresh ObjectStateManager записи»

ответ

0

Похоже, вы не пройти Id из UserProfile от зрения на контроллер. Вы должны добавить

@Html.HiddenFor(model => model.Id)

в форму с учетом

+0

ok теперь я получаю следующую ошибку: преобразование типа данных datetime2 в тип данных datetime привело к значению за пределами диапазона – user2470369

+0

Ok Я спрятал два поля, которым требовалось время, которое я не хочу редактировать. Это сработало, и приложение теперь работает. Благодаря! – user2470369

0

Вы отправляете модель представления, которая отключена от вашей сущности, и пытается сказать EF, что она изменилась - о которой она не знает. Попробуйте что-то вроде этого вместо

var obj = yourContext.UserProfiles.Single(q=>q.Id==userProfile.Id); 
obj = userprofile; // ... Map userprofile to the tracked object, obj 
yourContext.SaveChanges(); 
+0

Последовательность не содержит элементов - Это ошибка, я получаю, когда я попытался это – user2470369

0

Попробуйте это:

if (ModelState.IsValid) 
{ 
    db.UserProfiles.Attach(userProfile); 
    db.SaveChanges(); 

    return RedirectToAction("Index"); 
} 
+0

Спасибо, но did'nt работать, только что вернулся в индекс и не было в обновлении таблицы. – user2470369

Смежные вопросы