model层的属性为:
public partial class UserInfo { public int Uid { get; set; } public string UName { get; set; } }
数据上下文类:生成数据
using System; using System.Data.Entity; using System.Data.Entity.Infrastructure; public partial class MyContext : DbContext { public MyContext() : base("name=MyContext") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { throw new UnintentionalCodeFirstException(); } public DbSet<UserInfo> UserInfo { get; set; } }
controller层: crud是在集合的基础上完成的(实则对集合的crud)
public class UserInfoCrudController : Controller { DbContext dbContext = new MyContext(); //由父类指向子类 实例化生成数据库 Set<>方法产生的是一个集合 // GET: /UserInfoCrud/ public ActionResult Index() { var list = dbContext.Set<UserInfo>(); return View(list); } public ActionResult Add() { return View(); } [HttpPost] public ActionResult Add(UserInfo userInfo) { dbContext.Set<UserInfo>().Add(userInfo); int result = dbContext.SaveChanges();//如果内存中的数据发生了变化,并且希望将这个变化映射到数据库,需要执行这个方法 if (result > 0) { return Redirect(@Url.Action("Index", "UserInfoCrud")); } else { return Redirect(@Url.Action("Add")); } } public ActionResult Edit(int id) { ViewData.Model = dbContext.Set<UserInfo>() .Where(u => u.Uid == id).FirstOrDefault(); return View(); } [HttpPost] public ActionResult Edit(UserInfo userInfo) { dbContext.Set<UserInfo>().AddOrUpdate(userInfo); int result = dbContext.SaveChanges(); if (result > 0) { return Redirect(Url.Action("Index")); } else { return Redirect(Url.Action("Edit", new RouteValueDictionary(new { id = userInfo.Uid }))); } } public ActionResult Remove(int id) { var userInfo = dbContext.Set<UserInfo>() .Where(u => u.Uid == id) .FirstOrDefault(); dbContext.Set<UserInfo>().Remove(userInfo); dbContext.SaveChanges(); return Redirect(Url.Action("Index")); } }
views层:
(1)数据展示部分
@using model所在 的命名空间 @model IQueryable<t2_EFTest.Models.UserInfo> @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Index</title> </head> <body> <div> @Html.ActionLink("添加","Add","UserInfoCrud") <hr/> <table border="1"> <tr> <th>编号</th> <th>姓名</th> <th>修改</th> <th>删除</th> </tr> @foreach (UserInfo userInfo in Model) { <tr> <td>@userInfo.Uid</td> <td>@userInfo.UName</td> <td> @Html.ActionLink("修改","Edit","UserInfoCrud", new RouteValueDictionary(new {id=@userInfo.Uid}),null) </td> <td> @Html.ActionLink("删除", "Remove", "UserInfoCrud", new RouteValueDictionary(new { id=@userInfo.Uid }),null) </td> </tr> } </table> </div> </body> </html>
(2)数据添加部分
@model t2_EFTest.Models.UserInfo @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Add</title> </head> <body> <div> @using (Html.BeginForm("Add", "UserInfoCrud", FormMethod.Post)) { <span>姓名:</span> @Html.TextBoxFor(u=>u.UName) <br/> <input type="submit" value="添加"/> } </div> </body> </html>
(3)数据修改部分
@model t2_EFTest.Models.UserInfo @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title>Edit</title> </head> <body> <div> @using (Html.BeginForm("Edit", "UserInfoCrud", FormMethod.Post)) { <span>编号:</span> @Model.Uid @Html.HiddenFor(u=>u.Uid) <br/> <span>姓名:</span> @Html.TextBoxFor(u=>u.UName) <br/> <input type="submit" value="修改"/> } </div> </body> </html>