我有一个很大的疑问。我有“客户表”。客户表格包含22个字段。我有“客户表格”的Db。它包含“多个表”,“多对多关系”。如果我使用“连接字符串”将“Db”连接到“Vb express 2012”并创建 EDMX 文件,则会显示每个表的视图。所以我试图将所有字段都放在“单一视图”中,并尝试将数据插入多个表中。为此,我使用了“ Code First Approach ”,我按照下面链接中提到的方法进行操作。工作正常。
http://www.codeproject.com/Tips/651495/Inserting-Data-into-Multiple-Tables-using-Code-Fir
现在我的问题是我使用Code第一种方法完成了“插入”过程。现在“如何使用这种方法进行UPDATE过程..因为我只做插入过程。仍然需要做更新,细节,删除..怎么做?
感谢。
答案 0 :(得分:1)
在视图中将您的客户添加到foreach lop中,并将每个主键传递给控制器的编辑和删除方法,如下所示:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.s1)
</td>
<td>
@Html.DisplayFor(modelItem => item.s2)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id=item.id }) |
@Html.ActionLink("Delete", "Delete", new { id=item.id })
</td>
</tr>
}
然后在你的控制器中创建一个GET方法,从视图中接受主键作为参数,如下所示:
public ActionResult Edit(int id)
{
Class1 class1 = db.Class1.Find(id);
return View(class1);
}
然后在“编辑视图”中创建一个表单,将值回发为:
@using (Html.BeginForm())
{
<div class="form-horizontal">
<h4>Class1</h4>
<hr />
@Html.HiddenFor(model => model.id)
<div class="form-group">
@Html.LabelFor(model => model.s1, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.s1, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.s2, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.s2, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</div>
</div>
}
然后在你的控制器中创建一个POST方法,从视图中接受模型作为参数,如下所示:
[HttpPost]
public ActionResult Edit([Bind(Include = "id,s1,s2")] Class1 class1)
{
db.Entry(class1).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
同样为删除创建GET和POST方法。
答案 1 :(得分:0)
基本上是在更新方法中......
找到要更新的对象 - 示例您的datacontext类对象= ctx,tablename = details
使用新数据
如果你没有将整个对象传递给方法,那么只需传递要更新的对象的主键和新值
public void update(details newData)
{
var result=ctx.details.Find(id);
result.name=newData.Name;
result.age=newData.Age;
ctx.SaveChanges();
}
删除: 一个类似的过程
public void Delete(int id)
{
var result=ctx.details.Find(id);
ctx.details.Remove(result);
ctx.SaveChanges();
}