Asp.net MVC4 使用EF实现数据库的增删改查
- EF的使用
步骤:(1)将EF添加到项目:在Model右击添加新建项找到ADO.NET实体数据模型,接着。。。(2)实现数据库的增删改查查询(因为在Model中已经添加EF实体了,所以就可以在Controller中进行有关的数据库操作)<<controller>>//数据上下文对象OrderDBEntities db = new OrderDBEntities();public ActionResult Index() {//使用SQO(标准查询运算符),查询//实际返回的是IQueryable 接口的之类对象//IQueryable<Models.Customer> query = db.Customers.Where(d => d.Address == "111");//这样转有可能报异常 EnumerableQuery<Models.Customer> query = (EnumerableQuery<Models.Customer>)db.Customers.Where(d => d.Address == "111");//DbQuery 支持延迟加载,就是只有使用到数据的时候,才去查询数据库//DbQuery<Models.Customer> query = db.Customers.Where(d => d.Address == "111") as DbQuery<Models.Customer>;//List<Models.Customer> list = query.ToList();//也可以这样// List<Models.Customer> list = db.Customers.Where(d => d.Address == "111").ToList();//用第二种方式:使用Linq语句,该语法只是给程序员用的,.net编译器会在编译程序集的时候把它转化为SQO//IQueryable<Models.Customer> query = from d in db.Customers where d.Address == "111" select d;//List<Models.Customer> list = (from d in db.Customers where d.Address == "111" select d).ToList();List<Models.Customer> list = (from d in db.Customers select d).ToList();//使用ViewData将数据传给ViewViewData["DataList"] = list;return View();}<<View>><body><table border="1"><!--要取到数据就直接@对应的变量 这样就可以了(导入命名空间也是一个道理)-->@foreach (Customer a in ViewData["DataList"] as List<Customer>){<tr><td>@a.Address</td><td>@a.CustomerName</td><td><a href="/home/del/@a.CustomerNo">删除</a><a href="/home/modify/@a.CustomerNo">修改</a></td></tr>}</table></body>删除:<<Controller>>public ActionResult Del(string id) //这个id是通过超链接带过来的{try{//需要一个实体对象参数//db.Customers.Remove(new Customer() {CustomerNo = id });//1,创建要删除的对象Customer modelDel = new Customer() { CustomerNo = id };//2,将对象添加到EF管理容器中db.Customers.Attach(modelDel);//3,修改对象的包装类对象标识为删除状态db.Customers.Remove(modelDel);//4,更新到数据库db.SaveChanges();//5,更新成功,则命令流浪器重定向 到 /Home/Index 方法return RedirectToAction("Index", "Home");}catch (Exception ){//指定对应跳转的视图Test下的Test.cshtml文件return RedirectToAction("Test", "Test");//return Content("删除失败" + ex.Message);}}<<View>>删除哪有什么视图,成功失败页面不给出了修改在视图里面肯定又个修改连接,点击跳转到对应的页面,并将参数传递给对应的函数<<View>><body><table border="1"><!--要取到数据就直接@对应的变量 这样就可以了(导入命名空间也是一个道理)-->@foreach (Customer a in ViewData["DataList"] as List<Customer>){<tr><td>@a.Address</td><td>@a.CustomerName</td><td><a href="/home/del/@a.CustomerNo">删除</a><a href="/home/modify/@a.CustomerNo">修改</a></td></tr>}</table></body>//调用到控制器中的modify方法,并以表单的形式显示相应的页面<<Controller>>[HttpGet] //加上这个 只要是超链接发送过来的就调用这个public ActionResult Modify(string id){Customer art = (from d in db.Customers where d.Address == "111" select d).FirstOrDefault();//将数据传递给视图:用ViewBag viewData 使用view的构造函数return View(art);}<<View>><body>@using (Html.BeginForm("Modify", "Home", FormMethod.Post)){<table><tr><td colspan="2">修改</td></tr><tr><td>标题:@Html.HiddenFor(a=>a.CustomerNo)</td>@*<td>@Html.TextBox("textName",(object)Model.CustomerNo)</td>*@<!--使用htmlHelper的强类型方法,直接从Model中根据CustoomerNo生成文本框--><td>@Html.TextBoxFor(a =>a.CustomerNo)</td><td>@Html.TextBoxFor(a =>a.CustomerName)</td><td><input type="submit" value="确定修改" />@Html.ActionLink("返回","index","home")</td></tr></table>}</body>当用户点击修改的时候又将数据以Post方式发送给Home控制器中的Modify函数进行处理<<Controller>>[HttpPost] //表单提交过来的就调用这个方法public ActionResult Modify(Customer model){try{//1,将实体对象加入EF对象容器中,并获取伪包装类对象DbEntityEntry<Customer> entry = db.Entry<Customer>(model);//2,将伪包装类对象的状态设置为unchangedentry.State = System.Data.EntityState.Unchanged;//3,设置被改变的属性entry.Property(a => a.CustomerName).IsModified = true;//4,提交到数据库 完成修改db.SaveChanges();return RedirectToAction("Index", "Home");}catch (Exception){return RedirectToAction("Test", "Test");}}补充:MVC中页面之间的跳转是通过MapRouter代码如下routes.MapRoute(name: "Default",url: "{controller}/{action}/{id}",defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional });
Asp.net MVC4 使用EF实现数据库的增删改查的更多相关文章
- 使用EF实现数据库的增删改查
EF的使用步骤:(1)将EF添加到项目:在Model右击添加新建项找到ADO.NET实体数据模型,接着…(2)实现数据库的增删改查查询(因为在Model中已经添加EF实体了,所以就可以在Control ...
- ThinkPHP实现对数据库的增删改查
好久都没有更新博客了,之前老师布置的任务总算是现在可以说告一段落了,今天趁老师还没提出其他要求来更新一篇博客. 今天我想记录的是我之前做项目,自己所理解的ThinkPHP对数据库的增删改查. 首先要说 ...
- Android学习---数据库的增删改查(sqlite CRUD)
上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...
- Android 系统API实现数据库的增删改查和SQLite3工具的使用
在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...
- Android SQL语句实现数据库的增删改查
本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- 【转载】通过JDBC对MySQL数据库的增删改查
通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...
- 利用API方式进行数据库的增删改查
/* 将数据库的增删改查单独放进一个包 */ package com.itheima28.sqlitedemo.dao; import java.util.ArrayList; import java ...
- MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
随机推荐
- node io.sockt 聊天应用
index.html <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset=& ...
- JSON对象末尾多余逗号问题
平时开发用的IE10,没发现这个问题,测试人员对系统兼容性测试时发现了在IE7下存在问题. 问题代码如下: var person = { name: "John", age: 25 ...
- Linux常用到的指令汇总
Linux常用到的指令汇总 根据鸟哥linux私房菜上定义的:一定要先學會的指令:ls, more, cd, pwd, rpm, ifconfig, find 登入與登出(開機與關機):telnet, ...
- IntelliJ IDEA创建第一个Java小程序
我尝试了汉化,会影响IDE部分功能. 其实IDE完全没必要汉化,就那么几个单词,不懂的话,就有道字典查一下吧. 汉化易于入门,不汉化一样可以使用. 我爱这个编辑器,非常之强大,就是比较占内存. 我爱这 ...
- org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.hibernate.proxy.pojo.javassist.
2011-08-16 13:26:58,484 [http-8080-1] ERROR [core.web.ExceptionInterceptor] - org.codehaus.jackson.m ...
- 函数lock_rec_create
/*********************************************************************//** Creates a new record lock ...
- Centos 6.5LAMP服务器(Apache+PHP+MySQL)的搭建
1.首先看下你的防火墙是否处于开启状态,如果是开启状态,按照如下方法来配置你的防火墙(如果你在安装虚拟机时就没有开启过防火墙,那么这一步就省略了): 1.配置防火墙,开启80端口.3306端口 vi ...
- R语言将5位数字日期转为正常日期
R语言中用double表示日期,即从1970-1-1距离给定日期的天数,将5位数字日期转为正常日期格式的方法 as.Date(16543,origin='1970-1-1')
- bzoj4199
看到这题我就伤心,当初想到了正解却因为各种sb原因没有写…… 好吧,其实我的正解是比较挫的…… 大家似乎都用了后缀数组,我用了后缀自动机(后缀树) 其实SAM是很好想得,用SAM建出后缀树后 我们考虑 ...
- Jenkins+Maven+SVN搭建自动部署、自动测试环境
.打开http://10.3.15.78:8080/jenkins/,第一次进入里面没有数据,我们需要创建job,我们这有2个项目,需要创建2个job.http://10.3.34.163:9890/ ...