以下的例子以留言本作为依据。

1.添加

        public ActionResult Create()
{
return View();
} //
// POST: /Contact/Create [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Message message)
{
if (ModelState.IsValid)
{
db.Messages.Add(message);
db.SaveChanges();
return RedirectToAction("Index");
} return View(message);
}

2.查看

 public ActionResult Index()
{
return View(db.Messages.ToList());
}

3.全部更新

//
// GET: /Contact/Edit/5 public ActionResult Edit(int id = )
{
Message message = db.Messages.Find(id);
if (message == null)
{
return HttpNotFound();
}
return View(message);
} //
// POST: /Contact/Edit/5 [HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Message message)
{
if (ModelState.IsValid)
{
db.Entry(message).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(message);
}

4.删除 

        //
// GET: /Contact/Delete/5 public ActionResult Delete(int id = )
{
Message message = db.Messages.Find(id);
if (message == null)
{
return HttpNotFound();
}
return View(message);
} //
// POST: /Contact/Delete/5 [HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
Message message = db.Messages.Find(id);
db.Messages.Remove(message);
db.SaveChanges();
return RedirectToAction("Index");
}

5.释放空间

protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}

6.部分更新记录

有的时候并不需要把一条数据记录全部更新,这时候必须注意编辑数据提交到数据库,会不会让数据库已有数据丢失。下面讨论避免的三种办法。

(1)在表单中利用HiddenFor把值传递到控制器动作中

...
@using(Html.BeginForm())
{
  ....
@Html.HiddenFor(a=>a.Id)
}

(2)另一种是在控制器中补充完整数据库中的数据。

        [HttpPost]
public ActionResult TestForm(Guestbook guestbook)
{
if (ModelState.IsValid)
{
var gb = db.Guestbooks.Find();
gb.confirm=guestbook.confirm;
gb.replied=guestbook.replied;
....
db.SaveChanges();
return Redirect("/");
}
return View();
}

(3)TryUpdateModel

       [HttpPost]
public ActionResult TestForm(FormCollection form)
{
if (ModelState.IsValid)
{
var gb = db.Guestbooks.Find();
TryUpdateModel(gb, "", form.AllKeys);
db.SaveChanges();
return Redirect("/");
}
return View();
}

  关于TryUpdateModel的用法,还可以是TryUpdateModel(model, new string[] { "字段1", "字段2", "字段3" }),以及设置排除form表单接收进来的某些字段TryUpdateModel(model, "", FromValue.AllKeys, new string[] { "字段1" })。

7.注销

        public ActionResult LogOff()
{
//清除窗体验证的Cookies
FormsAuthentication.SignOut(); //清除所有曾经写入过的Session信息
Session.Clear(); return RedirectToAction("Login", "Account");
}

4.2 EF的CRUD控制器代码的更多相关文章

  1. 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!

    瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...

  2. EF Core 三 、 EF Core CRUD

    EF Core CRUD 上篇文章中,我们已经基本入门了EFCore,搭建了一个简单的EFCore项目,本文开始简单使用下EF,做增删改查的相关操作: 一.数据新增操作(C) public stati ...

  3. 20.2.翻译系列:EF 6中基于代码的数据库迁移技术【EF 6 Code-First系列】

    原文链接:https://www.entityframeworktutorial.net/code-first/code-based-migration-in-code-first.aspx EF 6 ...

  4. EF的CRUD

    已经知道EF就是一个能够使得编程人员用面向对象的思想操作数据库的框架,那么在最初学习SQL的时候我们就知道对数据库的操作就是增删改查.万变不离其宗. EF也是操作数据库的当然也就是要对数据库实现增删改 ...

  5. 使用MVVM减少控制器代码实战(减少56%)

    减少比例= (360(原来的行数)-159(瘦身后的行数))/360 = 56% 父类 MVC 和MVVM 前后基本不动 父类主要完成如下三个功能: 1)功能:MJRefrsh +上拉下拉没有更多数据 ...

  6. EF之Code First代码优先

    1.前言 通过英文可知,表示的是代码优先,一般创建EF都是先创建数据库,创建根据数据库的EF实体模型,而code - first 则是反过来!... 2.代码实战 我们这次创建的不是原来的数据库EF设 ...

  7. Ado.Net实体数据模型EF,如何在代码中添加数据库连接密码

    在创建EF模型的时候,VS2013提示说“在连接字符串中存储敏感数据可能有安全风险”,于是我选择了在代码中添加,可是如何通过代码添加呢? 我在网上百度了下,没有人说的清楚直观. 假设我们创建了一个名字 ...

  8. 2016/3/13 MySQL 增删查改 CRUD 用代码实现

    用代码实现数据库数据输入 T-SQL语句 查询语句分几块 ①创建表 create table Car (Code varchar(50) primary key, #primary key 主键 定义 ...

  9. SQL Server、MySQL主从搭建,EF Core读写分离代码实现

    一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...

随机推荐

  1. 真正意义上下一代 Windows Embedded:有关 Windows 10 "Athens" 的事

    早在去年 BUILD 大会上,Joe Belfiore 就在一台巨大的 "脚踩钢琴" 上简短展示过 "Windows on Device"(又名 Windows ...

  2. eclipse 恢复SVN无法还原的文件 svn使用了还原,但本地的没有提交找回没提交代码的方法

    http://blog.sina.com.cn/s/blog_750167060102vd2n.html

  3. Java_一些特殊的关键字详(?)解

    1. native. 在看JDK源码时,想知道Math包里比如cos, sin等函数是如何实现的(猜想的是用他们在0点的泰勒展开式近似),但是打开之后却发现只有一个函数声明,并且有关键字native, ...

  4. EasyUI--messager

    1. alert 方法 <script type="text/javascript"> $( function() { $.messager.alert("调 ...

  5. ubuntu14.04 64位系统下编译3.13.11内核源码

    该过程一共分为四步: 1.下载内核:我下载的是3.13.11这个版本的内核! 2.解压内核:我将其解压/home/jello/Downloads/linux-3.13.11目录下!下文将会基于此目录编 ...

  6. Redis 在新浪微博中的应用

    Redis 在新浪微博中的应用 Redis简介 1. 支持5种数据结构 支持strings, hashes, lists, sets, sorted setsstring是很好的存储方式,用来做计数存 ...

  7. STL--queue

    queue-概述: 队列是一种特殊的线性表,它只允许在表的前端(Front)进行删除操作,而在表的后端(Rear)进行插入操作. l进行插入操作的端称为队尾,进行删除操作的端称为队头.队列中没有元素时 ...

  8. Nemerle Quick Guide

    This is a quick guide covering nearly all of Nemerle's features. It should be especially useful to a ...

  9. 如何在eclipse jee中创建Maven project并且转换为Dynamic web project

    如何在eclipse jee中创建Maven project并且转换为Dynamic web project 注意:该文档只针对以下eclipse版本,如图 为了方便,我将我本地的压缩包放在了微云网盘 ...

  10. Joke

    你忍心蜗居在不到10平米的小屋里吗?你忍心看着自己的女友和你奋斗一辈子还供不起一套房吗?你忍心看着你父母缩衣节食把仅有的一点养老金帮你还房贷吗? 这里才是实现你梦想的地方.加入我们,待遇从优,装备齐全 ...