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

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. mysqldump命令

    mysqldump命令 mysqldump命令是mysql数据库中备份工具,用于将MySQL服务器中的数据库以标准的sql语言的方式导出,并保存到文件中. 语法 mysqldump(选项) 选项 -- ...

  2. Java1.8.0_05 环境配置

    1.计算机->属性->高级系统设置->环境变量->系统变量 2.新建JAVA_HOME 变量值设为C:\Java\jdk1.8.0_05 即安装目录,确定. 3.新建CLASS ...

  3. js parseInt();parseFloat;Number()

    1:  parseInt( numString [, radix ] ) [测试浏览器:chromium && firefox] ①parseInt()函数用于将字符串转换为(十进制) ...

  4. 目前比较全的CSS重设(reset)方法总结

    在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是 重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的 ...

  5. hdu 2199 (二分)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2199 Can you solve this equation? Time Limit: 2000/1000 ...

  6. 【面向打野编程】——KMP算法入门

    一.问题 咱们先不管什么KMP,来看看怎么匹配两个字符串. 问题:给定两个字符串,求第二个字符串是否包含于第一个字符串中. 为了具体化,我们以 ABCAXABCABCABX 与 ABCABCABX为例 ...

  7. 7.mybatis一对多关联查询

    和第5节一对一查询类似,但是不同的是,一对一使用的是association,而一对多使用collection. 实例: 1个班级Class,对应1个老师Teacher,对应多个学生Student 1. ...

  8. varchar(10)与nvarchar(10)有什么区别

    前者是非unicode型,存储字符按1个算(内部空间存储占1字节),存储汉字的话按2个算, 就是可以存10个字符或者5个汉字 后者是unicode型,存储什么都是按1个算(内部空间存储占2字节), 就 ...

  9. iOS - MVVM 架构模式

    1.MVVM 从字面意思来理解,MVVM 即 Modal View ViewModel(模型 视图 视图模型).MVC 是一个用来组织代码的权威范式,也是构建 iOS App 的标准模式.Apple ...

  10. class&object

    类(class)是构造对象的模板或蓝图. 对象的行为是用可调用的方法定义的. import java.time.*; public class EmployeeTest{ public static ...