C# 无法将对象添加到context.DbSet。保存更改不起作用
我在控制器中有此GET方法:C# 无法将对象添加到context.DbSet。保存更改不起作用,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,我在控制器中有此GET方法: public ActionResult Reserve(int id) { ViewBag.staffID = new SelectList(context.Staffs, "staffID", "fName"); ViewBag.roomID = id; return View(); } 相应的观点是: @model _00002165.Models.Reservation @{ ViewBag.Title = "Reserve
public ActionResult Reserve(int id)
{
ViewBag.staffID = new SelectList(context.Staffs, "staffID", "fName");
ViewBag.roomID = id;
return View();
}
相应的观点是:
@model _00002165.Models.Reservation
@{
ViewBag.Title = "Reserve";
}
<h2>Reserve</h2>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<div class="editor-label">
<label>Room Number</label>
</div>
<div class="editor-field">
<input type="text" value="@ViewBag.roomID" readonly name="roomID"/>
</div>
<div class="editor-label">
@Html.LabelFor(model => model.fromDate)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.fromDate)
@Html.ValidationMessageFor(model => model.fromDate)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.toDate)
</div>
<div class="editor-field">
@Html.TextBoxFor(model => model.toDate)
@Html.ValidationMessageFor(model => model.toDate)
</div>
<div class="editor-label">
<label>Staff:</label>
</div>
<div class="editor-field">
@Html.DropDownList("staffID", "Select Staff")
@Html.ValidationMessageFor(model => model.staffID)
</div>
<button type="submit">Reserve</button>
}
这给了我以下错误:
Store update, insert, or delete statement affected an unexpected number of rows (0).
人们建议我将@Html.HiddenFor(model=>model.reservationID)
添加到我的视图中
但是model.reservationID
为空
我怎样才能解决这个问题?
请帮助您不应该在视图之间传递数据传输对象。使用ToModel方法创建视图模型,该方法将返回所需的DTO。添加到上下文中,您不需要更改状态 用这个
context.Reservation.Add(res);
context.SaveChanges();
移除
context.Entry(res).State = EntityState.Modified;
如果您正在尝试更新,请从数据库中提取记录,进行更改并调用SaveChangescontext.Entry(res).State=EntityState.Modified代码>
此行不是必需的-如果您手动将某个内容标记为已修改,则会出现此行。由于您要添加一个全新的实体,正确的值应该是添加的
,默认情况下该值应该在那里
似乎是它试图执行更新
而不是插入
,这导致了该错误。您应该在get方法中返回一个保留
。
context.Entry(res).State = EntityState.Modified;