我正在使用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>
我不知道如何从文本框中获取用户数据并保存到数据库中
答案 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”变量是多余的。您可以从上下文中获取实体后直接对其进行更新。