如何使用代码优先的方法进行更新、删除过程

本文关键字:更新 删除 过程 方法 代码 何使用 | 更新日期: 2023-09-27 18:24:39

我有一个很大的疑问。我有"客户表格"。客户表单包含22个字段。我有"客户表格"的Db。它包含具有"多对多关系"的"多个表"。如果我使用"连接字符串"将我的Db与"Vb express 2012"连接,并创建EDMX文件。它显示每个表的视图。因此,我尝试将所有字段放在"单一视图"中,并尝试将数据插入多个表中。为此,我使用了"代码优先方法",我遵循了下面链接中提到的相同方法。工作正常。

http://www.codeproject.com/Tips/651495/Inserting-Data-into-Multiple-Tables-using-Code-Fir

现在我的问题是,我使用代码优先的方法完成了"插入"过程。。现在"如何使用这种方法进行UPDATE过程。因为我只做了插入过程。仍然需要进行更新、详细信息、删除。如何做到这一点?

谢谢。

如何使用代码优先的方法进行更新、删除过程

将您的客户添加到视图中的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);
}

然后在编辑视图中制作一个表单,将值POST为:

@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");
}

类似地,为Delete创建GET和POST方法。

基本上在更新方法中。。。

  1. 查找要更新的对象-示例您的datacontext类object=ctx,tablename=details

  2. 用新数据更新找到的对象

如果您没有将整个对象传递给该方法,那么只需传递要更新的对象的主键和新值

  public void update(details newData)
{
var result=ctx.details.Find(id);
result.name=newData.Name;
result.age=newData.Age;
ctx.SaveChanges();
}

要删除:类似的过程

  1. 查找对象-例如您的datacontext类object=ctx,tablename=details
  2. 删除它

  public void Delete(int id)
    {
    var result=ctx.details.Find(id);
    ctx.details.Remove(result);
    ctx.SaveChanges();
    }