Я делаю модификации в приложении C # MVC, которое я унаследовал.
У меня есть база данных, и для простоты я просто сосредоточусь на двух таблицах, с которыми я работаю, для этого запроса linq.
Item
ItemID Int PK
ItemName
RepairSelection (да или нет)
RepairID Int FK
Ремонт
RepairID Int PK
RepairCategory
SubmissionDate
DateSentForRepair
Хорошо, поэтому ItemID является в значительной степени идентификатором, а представление для отображения сведений о восстановлении выглядит следующим образом (фрагмент):
<%= Html.LabelFor(x => x.ItemID)%>
<%= Html.DisplayFor(x => x.ItemID)%><br />
<%= Html.LabelFor(x => x.Repair.RepairCategory)%>
<%= Html.DisplayFor(x => x.Repair.RepairCategory, "FormTextShort")%><br />
<%= Html.LabelFor(x => x.Repair.SubmissionDate)%>
<%= Html.DisplayFor(x => x.Repair.SubmissionDate)%><br />
<%= Html.LabelFor(x => x.Repair.DateSentForRepair)%>
<%= Html.DisplayFor(x => x.Repair.DateSentForRepair)%><br />
<%= Html.ActionLink("Edit Repair Details", "Edit", new { ItemID= Model.ItemID})%>
Вот действие GET Edit:
public ActionResult Edit(Int64? itemId)
{
ModelContainer ctn = new ModelContainer();
var item = from i in ctn.Items where i.ItemID == itemId select i;
return View(item.First());
}
Это тоже хорошо, в окне GET Edit отображаются правильные детали. Я застрял в запросе linq для обновления таблицы восстановления. Сегодня я пробовал так много способов, что моя голова просто зажарилась (новичок в Linq, как вы уже догадались). Моя последняя попытка здесь (я знаю, что это далеко, так что будьте спокойны ;-)):
[HttpPost]
public ActionResult Edit(Int64 itemId, Repair repair, Item item, FormCollection formValues)
{
if (formValues["cancelButton"] != null)
{
return RedirectToAction("View", new { ItemID = itemId });
}
ModelContainer ctn = new ModelContainer();
Repair existingData = ctn.Repair.First(a => a.RepairId == item.RepairID && item.ItemID == itemId);
existingData.SentForConversion = DateTime.Parse(formValues["SentForConversion"]);
ctn.SaveChanges();
return RedirectToAction("View", new { ItemID = itemId });
}
Для вышеуказанной попытки я получаю ошибку Sequence No Elements.
Любая помощь или указатели будут оценены. Спасибо, ребята.