1、 新建一个项目:
2、 在Models文件夹新增类。
代码如下:
public class Product { [Key] public int Id { get; set; } public string ProductName { get; set; } public decimal Price { get; set; } public string Descript { get; set; } }
注意,这里的特性:[Key]是指定Id为主键。这里要引用
using System.ComponentModel.DataAnnotions
命名空间。
3、 向项目新建文件夹:Context用于存放DbContext,
1、 在DbContext文件夹下新建类:
ProductContext
代码为:
public class ProductContext:DbContext { public DbSet<Product> Products { get; set; } }
注意,这个类继承自DbContext,DbContext在System.Data.Entity中定义,所以要引用此命名空间。还要引用: WebApplication3.Models;
5、添加控制器(Controller).
6、在控制器类ProductController加入
ProductContext db = new ProductContext(); //使用Context
7、修改Index Action
改为:
public ActionResult Index() { return View(db.Products.ToList()); }
8、重新生成项目,因为不生成项目,下一步添加View会出错。
9、在Index Action内按右键,添加View
至此完成 查询的代码,可以运行查看一下校果。
这时点击Create New 按钮,会报错,因为还没有实现Create New 的View.
10、接下来,来实现Create New 功能。
11、添加Create View ,在Create Action里右击。
回到ProductController
修改Create的PostAction,代码改为:(注意这里要引用WebApplication3.Models;)
// POST: Product/Create 注意,这里修改的是有[HttpPost]特性的Create Action [HttpPost] public ActionResult Create(Product product) { try { if (ModelState.IsValid) //验证数据有效性 { db.Products.Add(product); db.SaveChanges(); return RedirectToAction("Index"); } //验证不通过 return View(product);//返回Model给View } catch { return View(); } }
运行,测试。能新增记录,说明测试OK
12、下面完成Details View。按上面方法新建View
修改:Details Action的代码:(注意这里要引用:System.Net, HttpStatusCode在System.Net中定义。)
public ActionResult Details(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Product product = db.Products.Find(id); if (product == null) { return new HttpNotFoundResult(); } return View(product); }
OK,详情页面完成。
13、现在做Edit,按照上面方法建立View.
修改Create Action ,注意修改Get那个。代码为:
// GET: Product/Edit/5 public ActionResult Edit(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Product product = db.Products.Find(id); if (product == null) { return new HttpNotFoundResult(); } return View(product); }
修改Create Action 有[HttpPost]特性那个,代码为:
[HttpPost] public ActionResult Edit( Product product) { try { if (ModelState.IsValid) { db.Entry(product).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(product); } catch { return View(); } }
修改完成!
14,最后做删除。新建Delete Action
修改Controller代码:
// GET: Product/Delete/5 public ActionResult Delete(int? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } Product product = db.Products.Find(id); if (product == null) { return new HttpNotFoundResult(); } return View(product); } // POST: Product/Delete/5 [HttpPost] public ActionResult Delete(int? id,Product pro) { try { Product p = new Product(); if (ModelState.IsValid) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } p = db.Products.Find(id); if (p == null) { return new HttpNotFoundResult(); } db.Products.Remove(p); db.SaveChanges(); return RedirectToAction("Index"); } return View(p); } catch { return View(); } }
OK,运行一下,一切正常。
下一节,说说Data Annotations