mvc+linq+EF对数据表的查删改
////// 查询数据库中学生姓名 /// ///public ActionResult Index() { //使用linq,查询数据上下文中的学生姓名 List list = (from d in db.T_student select d).ToList(); //将集合数据传给视图 ViewData["DataList"] = list; return View(); }
////// 根据学生ID删除学生 /// /// 学生ID ///public ActionResult Del(string id) { //创建要删除的实体,并将ID赋值给实体对象 T_student modelDel = new T_student() { studentId = id }; //将实体对象添加到EF管理容器 db.T_student.Attach(modelDel); //将实体对象包装类标示为删除状态 db.T_student.Remove(modelDel); //更新数据库 db.SaveChanges(); //更新成功,跳转到Index return RedirectToAction("Index","MyClass");}
#region 显示要修改的数据
[HttpGet]
///
/// 显示要修改的数据
///
/// 要修改的学生ID
///
public ActionResult Modify(string id)
{
//根据学生ID,查询数据库,返回集合中拿到第一个实体对象
T_student ts = (from a in db.T_student where a.studentId == id select a).FirstOrDefault();
//查询课程名称
IEnumerable listItem=(from c in db.T_class select c).ToList().Select(c=>new SelectListItem{Value=c.classId.ToString(),Text=c.className});
//查询到的课程名称给Viewbag
ViewBag.classList = listItem;
//使用View,将数据传给视图上名为model的属性
return View(ts);
}
#endregion
#region 保存要修改的数据
[HttpPost]
///
/// 保存要修改的数据
///
/// 要修改的学生ID
///
public ActionResult Modify(T_student ts)
{
//将实体对象加入EF对象容器中,并获取包装类对象
DbEntityEntry entry=db.Entry(ts);
//将包装类设置为unchange
entry.State = System.Data.EntityState.Unchanged;
//设置被改变的属性
entry.Property(a=>a.studentName).IsModified=true;
entry.Property(a => a.classId).IsModified = true;
//提交更新到数据库
db.SaveChanges();
//更新成功,跳转到Index
return RedirectToAction("Index", "MyClass");
}
#endregion
3.添加查询列表视图(Index.cshtml)
@using MyMvcTest.Models
@{
Layout = null;
}
Index
| id | 姓名 | 课程ID | 编辑 |
|---|---|---|---|
| @student.studentId | @student.studentName | @student.classId | 删除 修改 |
添加“修改”视图(modify.cshtml)
@model MyMvcTest.Models.T_student
@{
Layout = null;
}
Modify
@using (Html.BeginForm("Modify", "MyClass", FormMethod.Post))
{
| 修改:@Html.HiddenFor(a=>a.studentId) | |
| 课程名称 | @Html.DropDownListFor(a => a.classId, ViewBag.classList as IEnumerable |
| 学生姓名 | @Html.TextBoxFor(a => a.studentName) |
| @Html.ActionLink("返回", "Index", "MyClass") | |