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将数据传给View
ViewData["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,将伪包装类对象的状态设置为unchanged
entry.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 }
);

使用EF实现数据库的增删改查的更多相关文章

  1. Asp.net MVC4 使用EF实现数据库的增删改查

    EF的使用 步骤: (1)将EF添加到项目:在Model右击添加新建项 找到ADO.NET实体数据模型,接着... (2)实现数据库的增删改查       查询 (因为在Model中已经添加EF实体了 ...

  2. ThinkPHP实现对数据库的增删改查

    好久都没有更新博客了,之前老师布置的任务总算是现在可以说告一段落了,今天趁老师还没提出其他要求来更新一篇博客. 今天我想记录的是我之前做项目,自己所理解的ThinkPHP对数据库的增删改查. 首先要说 ...

  3. Android学习---数据库的增删改查(sqlite CRUD)

    上一篇文章介绍了sqlite数据库的创建,以及数据的访问,本文将主要介绍数据库的增删改查. 下面直接看代码: MyDBHelper.java(创建数据库,添加一列phone) package com. ...

  4. Android 系统API实现数据库的增删改查和SQLite3工具的使用

    在<Android SQL语句实现数据库的增删改查>中介绍了使用sql语句来实现数据库的增删改查操作,本文介绍Android 系统API实现数据库的增删改查和SQLite3工具的使用. 系 ...

  5. Android SQL语句实现数据库的增删改查

    本文介绍android中的数据库的增删改查 复习sql语法: * 增 insert into info (name,phone) values ('wuyudong','111') * 删 delet ...

  6. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  7. 【转载】通过JDBC对MySQL数据库的增删改查

    通过JDBC进行简单的增删改查(以MySQL为例) 目录 前言:什么是JDBC 一.准备工作(一):MySQL安装配置和基础学习 二.准备工作(二):下载数据库对应的jar包并导入 三.JDBC基本操 ...

  8. 利用API方式进行数据库的增删改查

    /* 将数据库的增删改查单独放进一个包 */ package com.itheima28.sqlitedemo.dao; import java.util.ArrayList; import java ...

  9. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. ARM机器码分析

    我们编写的汇编程序还是不够底层,CPU都是对机器码进行操作的,所以还需要用汇编器将汇编代码转换成机器码才能被CPU处理.下面举几个例子来说说分析ARM机器码的方法. 对编译连接之后得到的ELF进行反汇 ...

  2. [Audio processing] 常见语音特征 —— LPC

    共振峰产生的原理及其在音质上的体现,共振峰的分布位置是建立在声音产生媒介的共鸣物理结构基础上的(Resonant Physical Structure).   无论是人声还是乐器,它们的声音特性都源自 ...

  3. CodeForces 221(div 2)

    A 无trick水题... /* * Author: Plumrain * Created Time: 2013-12-24 22:26 * File Name: B.cpp */ #include ...

  4. zoj 1760 floyd构图+Dinic最大流

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 #include <cstdio> #includ ...

  5. AngularJS测试二 jasmine测试路由 控制器 过滤器 事件 服务

    测试应用 1.测试路由 我们需要检测路由是否在运作,是否找到了,或者是404了.我们要确认路由事件触发了,预期的模板是否真的加载了.既然路由会改变页面的地址(URL)和页面内容,我们需要检测路由是否被 ...

  6. storyBoard方式ScrollView的AutoLayout

    在使用storyboard和xib时,我们经常要用到ScrollView,还有自动 布局AutoLayout,但是ScrollView和AutoLayout 结合使用,相对来说有点复杂.根据实践,我说 ...

  7. Facebook 开源安卓版 React Native,开发者可将相同代码用于网页和 iOS 应用开发

    转自:http://mt.sohu.com/20150915/n421177212.shtml Facebook 创建了React Java 库,这样,Facebook 的工程团队就可以用相同的代码给 ...

  8. 你真的理解Java的this和super吗?

    你不知道的this 很多介绍java的书籍都说this指该对象本身.我们来看下面代码: class Base{ private int i = 3; public Base() { this.disp ...

  9. Android中为图标加上数字--用于未读短信数提醒,待更新应用数提醒等

    本文属于原创,转载请著名出处:http://flysnow.iteye.com/blog/906770 写道 在我们开发一些如短消息.应用商店等应用时,会考虑在短消息的图标上加上未读短信的数量,在应用 ...

  10. LeetCode:Permutations(求全排列)

    Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...