如何使用linq更新数据库中的数据

时间:2019-04-02 12:33:17

标签: c# asp.net-mvc linq

我正在使用linq学习C#MVC。现在我不知道如何将更新的数据保存在数据库中

如何更新数据?

public ActionResult Edit(Table_2 emp)
{
    List<Table_2> objemp = new List<Table_2>();
    using (var dbs = new guruEntities())
    {
        var name = emp.name;
        var dep = emp.dprmt;
        var query = from n in dbs.Table_2.Where(n => n.name == name && n.dprmt == dep)
            orderby n.id
            select n;
        dbs.SaveChanges();
    }

    return RedirectToAction("Index");
}

查看:

<div class="form-horizontal">
<h4>Table_2</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@Html.HiddenFor(model => model.id)
<div class="form-group">
    @Html.LabelFor(model => model.name, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.name, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.name, "", new { @class = "text-danger" })
    </div>
</div>
<div class="form-group">
    @Html.LabelFor(model => model.dprmt, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.dprmt, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.dprmt, "", new { @class = "text-danger" })
    </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>

我不知道如何从文本框中获取用户数据并保存到数据库中

2 个答案:

答案 0 :(得分:1)

正如您所说,您只想更新数据库中的记录。 然后首先从要更新的数据库中获取记录 如下记录

public ActionResult Edit(Table_2 emp)
{
      var table2 = _dbContext.Table_2.Where(x => x.Id == emp.id).FirstOrDefault(); //SingleOrDefault() also used.
      if (table2 == null)
      {
           throw new Exception("not found");
      }
       table2.name = emp.name;
       table2.dprmt = emp.dep;
       dbs.SaveChanges();
       return RedirectToAction("Index");
}

首先从数据库获取记录并更新该记录并调用SaveChanges()。 如果您需要将新记录添加到数据库中,请创建第一个实体,例如

Table_2 entity = new Table_2();
        entity.id = 1;
        entity.name = "name";
        entity.dprmt = "dept";
        _dbContext.Table_2.Add(entity)
        dbs.SaveChanges();

您可以保存并更新到数据库。 让我知道是否有任何问题:)

答案 1 :(得分:0)

您正在使用“查询”变量从数据存储中检索数据(我假设是Entity Framework)。 但是,一旦获取数据,就需要对其进行更新。 应该是

query.name = "new name";

,然后当您调用保存更改时,EF将接管更改并更新数据库。

PS:

您创建的“名称”和“ deps”变量是多余的。您可以从上下文中获取实体后直接对其进行更新。