如何使用Code First Approach更新,删除流程?

时间:2015-11-26 12:36:01

标签: javascript c# jquery sql asp.net-mvc-4

我有一个很大的疑问。我有“客户表”。客户表格包含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过程..因为我只做插入过程。仍然需要做更新,细节,删除..怎么做?

感谢。

2 个答案:

答案 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)

基本上是在更新方法中......

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

  2. 使用新数据

  3. 更新找到的对象

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

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

    删除: 一个类似的过程

    1. 查找对象 - 示例您的datacontext类对象= ctx,tablename = details
    2. 将其删除
    3.   

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