【问题标题】:How to do Update , Delete process using Code First Approach?如何使用代码优先方法进行更新、删除过程?
【发布时间】:2015-11-26 12:36:00
【问题描述】:

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

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

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

谢谢。

【问题讨论】:

  • 您能详细说明一下吗?我了解到您想编辑和删除数据库中的数据。我说的对吗?
  • 是的,你完全正确 Awais 。我的问题是“如何使用代码优先方法进行更新、删除进程”。我使用与以下链接中提到的相同的代码优先方法完成插入过程。 codeproject.com/Tips/651495/… 所以我需要在 MVC4 中进行更新和删除过程。我的客户表格已完成,直到插入过程。我仍然需要更新和删除过程..如何使用代码优先方法来做到这一点。这是我的疑问?

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


【解决方案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");
}

同样为 Delete 创建 GET 和 POST 方法。

【讨论】:

    【解决方案2】:

    基本上在一个更新方法中...

    1. 找到要更新的对象 - 以您的数据上下文类 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. 查找对象 - 例如您的数据上下文类 object=ctx,tablename=details
    2. 删除它

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-17
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多