4.2 EF的CRUD控制器代码
以下的例子以留言本作为依据。
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控制器代码的更多相关文章
- 瞧一瞧,看一看呐,用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!!
瞧一瞧,看一看呐用MVC+EF快速弄出一个CRUD,一行代码都不用写,真的一行代码都不用写!!!! 现在要写的呢就是,用MVC和EF弄出一个CRUD四个页面和一个列表页面的一个快速DEMO,当然是在不 ...
- EF Core 三 、 EF Core CRUD
EF Core CRUD 上篇文章中,我们已经基本入门了EFCore,搭建了一个简单的EFCore项目,本文开始简单使用下EF,做增删改查的相关操作: 一.数据新增操作(C) public stati ...
- 20.2.翻译系列:EF 6中基于代码的数据库迁移技术【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/code-based-migration-in-code-first.aspx EF 6 ...
- EF的CRUD
已经知道EF就是一个能够使得编程人员用面向对象的思想操作数据库的框架,那么在最初学习SQL的时候我们就知道对数据库的操作就是增删改查.万变不离其宗. EF也是操作数据库的当然也就是要对数据库实现增删改 ...
- 使用MVVM减少控制器代码实战(减少56%)
减少比例= (360(原来的行数)-159(瘦身后的行数))/360 = 56% 父类 MVC 和MVVM 前后基本不动 父类主要完成如下三个功能: 1)功能:MJRefrsh +上拉下拉没有更多数据 ...
- EF之Code First代码优先
1.前言 通过英文可知,表示的是代码优先,一般创建EF都是先创建数据库,创建根据数据库的EF实体模型,而code - first 则是反过来!... 2.代码实战 我们这次创建的不是原来的数据库EF设 ...
- Ado.Net实体数据模型EF,如何在代码中添加数据库连接密码
在创建EF模型的时候,VS2013提示说“在连接字符串中存储敏感数据可能有安全风险”,于是我选择了在代码中添加,可是如何通过代码添加呢? 我在网上百度了下,没有人说的清楚直观. 假设我们创建了一个名字 ...
- 2016/3/13 MySQL 增删查改 CRUD 用代码实现
用代码实现数据库数据输入 T-SQL语句 查询语句分几块 ①创建表 create table Car (Code varchar(50) primary key, #primary key 主键 定义 ...
- SQL Server、MySQL主从搭建,EF Core读写分离代码实现
一.SQL Server的主从复制搭建 1.1.SQL Server主从复制结构图 SQL Server的主从通过发布订阅来实现 1.2.基于SQL Server2016实现主从 新建一个主库&quo ...
随机推荐
- linux中的shell脚本编程
[1]shell脚本 1--- shell命令 2--- 控制语句(新的语法) (Shell命令的有序集合) [2]创建shell脚本文件 1--- 1.sh 2--- chmod 777 1.sh ...
- CodeForces 527B Error Correct System
Error Correct System Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I6 ...
- Know How To Use Check Box Mapping Of Other Values Property In Oracle Forms
Check Box Mapping of Other Values specifies how any fetched or assigned value that is not one of the ...
- JDBC操作Oracle数据库
背景知识 含义:JDBC是一种java数据库连接技术,能实现java程序对各种数据库的访问.由一组使用java语言编写的类和接口组成,这些类和接口称为JDBC API,他们位于java.sql 以及j ...
- HDU 1005 Number Sequence(数列)
HDU 1005 Number Sequence(数列) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Jav ...
- WPF基础学习第二天(高级控件)
1.Menu菜单控件 Exp1: Code: <Window x:Class="菜单Menu.MainWindow" xmlns="http://schemas.m ...
- js文件的装载和执行
1.浏览器对script引用的js文件分两步,下载,下载完毕后马上执行:这两步都会阻塞浏览器继续解析. 2.加入defer属性,<script defer type="text/jav ...
- mac系统如何进行剪切
来源: http://jingyan.baidu.com/article/1612d5007f76e7e20e1eeeca.html 分步阅读 mac os x下没有像windows中现成的“剪切”命 ...
- HIHO 线段树(单点)
#include <stdio.h> #include <string.h> #include <math.h> #include <iostream> ...
- 手机CPU知识扫盲:谈谈手机CPU架构与原理 (全
CPU是手机上面最复杂,最贵的Soc(芯片),担任的也是手机中大脑的位 置,是手机跑分性能的决定性硬件.智能手机发展到今天,各大手机CPU厂商也从春秋战国逐渐到了现在四国鼎立的时代(高通,MTK,三星 ...