天才第一步:创建数据库


创建数据库的代码:

create table category(
id int primary key,
name nvarchar(20)
)create table news(
id int primary key,
title nvarchar(20),
content nvarchar(200),
createTime datetime ,
caid int constraint fk_ca_id foreign key references category(id)
)create table comment(
id int primary key,
content nvarchar(100),
createTime dateTime,
userIp nvarchar(50),
newsId int constraint fk_news_id foreign key references news(id)
)

手动添加一些数据

天才第二步:创建MVC工程文件

   

天才第三步:在Models文件夹下创建EF


“来自数据库的EF设计器” ,下一步

选择数据库,如果服务器用的是本地(.),下面就选择Windows身份验证,然后找到自己的数据库

下面的”另存为“的名称默认就好

勾选自己需要的表

这就是创建好EF的样子偶~~~

             

天才第四步:编码–修改三个页面

一、首先是控制器(HomeCotroller)名字是默认生成的,也可以自己修改!

HomeController

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MVC_YZY.Models;
using System.Data.Entity.Infrastructure;namespace MVC_YZY.Controllers
{//1、控制器类(继承了controller)public class HomeController : Controller{      /// <summary>/// 数据上下文对象/// </summary>newssystemEntities db = new newssystemEntities();#region 1、 查询 文章 列表 +ActionResult Index()/// <summary>/// 查询 文章 列表/// </summary>/// <returns></returns>public ActionResult Index(){//1.查询 数据库里的 文章数据(通过 EF 执行)//1.1第一种方式:使用 SQO(标准查询运算符) 查询所有未软删除的文章//实际返回的是 一个 IQueryable 对象?此处其实是返回了一个 IQueryable 接口的子类对象//IQueryable<newssystemEntities> query= db.news.Where(d => d.AIsDel == false);//此时真实返回的类型未 DbQuery<T> 支持 延迟加载!只有当使用道数据的时候,才去 查询数据库//DbQuery<newssystemEntities> query = (db.news.Where(d => d.AIsDel == false)) as DbQuery<newssystemEntities>;//直接将 返回的 DbQuery 转成 List<T>集合,也就是立即查询数据库,并返回查询到的集合//List<news> list = db.news.Where(d => d.caId == 0).ToList();//1.2第二种方式:使用 Linq语句 查询所有新闻标题//Linq 仅仅是给程序员用的 语法糖,.NET编译器会再编译程序集(中间代码)的时候,将linq语句转成 SQO(标准查询运算符)List<news> list = (from d in db.news where d.caId != 0 select d).ToList();//2.将集合数据传给视图//ViewBag.DataList = list;ViewData["DataList"] = list;//3."加载" 视图return View();}#endregion#region 2、 执行删除操作(根据ID)+ActionResult Del(int id)/// <summary>/// 执行删除操作(根据ID)/// </summary>/// <param name="id">要删除的新闻ID -/home/del/12</param>/// <returns></returns>public ActionResult Del(int id)//此ID会根据路由的url 配置{id}占位符,而被 12 替换掉{//先查询出来再删除var modelDel = db.news.FirstOrDefault(n => n.id == id);db.news.Remove(modelDel);int  res= db.SaveChanges();return RedirectToAction("Index", "Home");    }#endregion#region 3、 显示要修改的数据 +ActionResult Modify(int id)[HttpGet]/// <summary>/// 0.4 显示要修改的数据/// </summary>/// <param name="id"></param>/// <returns></returns>public ActionResult Modify(int id){#region 本步骤的思路//1、获取选中的新闻 显示到一个新的页面。/** * 首先 根据newsid获取该新闻的信息 * 将新闻的标题和内容显示再文本框中* * 然后查询所有的新闻分类,显示在下拉框中* * 最后根据该新闻的类别 设置为下拉框的默认选中*///news n = (from a in db.news where a.caId==0 select a).FirstOrDefault();//IEnumerable<SelectListItem> m = (from c in db.categories select c).ToList().Select(c => new SelectListItem { Value = c.id.ToString(), Text = c.name });#endregionnews n = db.news.Find(id);ViewBag.newTitle = n.title;ViewBag.newContent = n.content;var categories = from c in db.categories select c;var temp = new SelectList(categories, "id", "name",n.caId);ViewBag.categories = temp;return View();}#endregion#region 执行修改 +ActionResult Modify(news news)[HttpPost]/// <summary>/// 执行修改/// </summary>/// <param name="news"></param>/// <returns></returns>public ActionResult Modify2(){//首先,找到对象int newid =Convert.ToInt32( Request.Form["id"]);var n = db.news.FirstOrDefault(m => m.id == newid);//var n = db.news.Find(id);//然后,更新数据对象n.caId =Convert.ToInt32( Request.Form["dropCate"]);n.content = Request.Form["txtContent"];n.title = Request.Form["newTitle"];//最后,保存修改db.SaveChanges();return RedirectToAction("Index", "Home"); }#endregion}
}

二、然后是Index.cshtml页面

@using MVC_YZY.Models
@{Layout = null;
}<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width" /><title>Index</title><style type="text/css">#tbList {border: 1px solid #0094ff;width: 800px;margin: 10px auto;border-collapse: collapse;text-align: center}#tbList th, td {border: 1px solid #0094ff;padding: 10px;text-align: center}</style><script type="text/javascript">function Del(id) {if (confirm("您确认要删除么?")) {window.location = "/Home/Del/" + id;}}function Modify(id) {window.location = "/Home/Modify/" + id;}</script>
</head>
<body><div><table id="tbList"><tr><th>ID</th><th>标题</th><th>内容</th><th>发布时间</th><th>CaId</th><th>操作</th></tr><!--遍历 action方法 设置给 ViewData 的集合数据,生成HTML 代码-->@foreach (news a in ViewData["DataList"] as List<news>){<tr><td>@a.id</td><td>@a.title</td><td>@a.content</td><td>@a.createTime</td><td>@a.caId</td><td><a href="javascript:Del( @a.id)">删除</a><a href="javascript:Modify(@a.id)">修改</a></td></tr>}</table></div>
</body>
</html>

三、最后是 Modify.cshtml 页面

@model MVC_YZY.Models.news
<!--指定页面Model的属性 类型-->
@{Layout = null;
}
<!DOCTYPE html>
<html>
<head><meta name="viewport" content="width=device-width" /><title>修改</title><style type="text/css">#tbList {border: 1px solid #0094ff;width: 400px;margin: 10px auto;border-collapse: collapse;}#tbList th, td {border: 1px solid #0094ff;padding: 10px;}</style>
</head>
<body>@using (Html.BeginForm("Modify2", "Home", FormMethod.Post)){<table id="tbList"><tr><td colspan="2">修改 @Html.HiddenFor(a => a.id)</td></tr><tr><td>标题:</td>@*<td>@Html.TextBox("txtName", (object)Model.ATitle)</td>*@<!--使用HTMLHelper强类型方法 直接 从MOdel 中根据title属性生成文本框--><td>@Html.TextBox("newTitle", ViewBag.newTitle as string)</td></tr><tr><td>分类:</td><!--使用强类型方法根据 标题 属性生成下拉框 并自动根据model属性里的title 设置下拉框的 默认选中项-->@*<td>@Html.DropDownListFor(a=>a.id, ViewBag.CateList as IEnumerable<SelectListItem>)</td>*@<td>@Html.DropDownList("dropCate",ViewBag.categories as SelectList) </td></tr><tr><td>内容:</td><!--使用HTMLHelper强类型方法 直接 从MOdel 中根据content属性生成文本域-->@*<td>@Html.TextAreaFor(a => a.content, 10, 60, null)</td>*@<td>@Html.TextBox("txtContent", ViewBag.newContent as string)</td></tr><tr><td colspan="2"><input type="submit" value="确定修改" />@Html.ActionLink("返回", "Index", "Home")</td></tr></table>       }
</body>
</html>

天才第五步:查看运行效果

一、删除页面

二、修改页面

MVC+EF+Linq 实例相关推荐

  1. .NET MVC+ EF+LINQ 多表联查VIEW显示列表

    1.VIEW 页面显示代码 <link href="~/Content/bootstrap.css" rel="stylesheet" />< ...

  2. MVC +EF+linq 多表联查

    关于linq的多表联查效果的实现: 后台多表查询  内连接: SELECT [Extent2].[partID] AS [partID], [Extent1].[userName] AS [userN ...

  3. APS.NET MVC + EF (01)---Linq和Lambda表达式

    APS.NET MVC + EF (01)---Linq和Lambda表达式 1.1 Linq介绍 LINQ全称 Language Integrated Query(语言集成查询).为我们提供一种统一 ...

  4. MVC+EF三层+抽象工厂

    MVC+EF三层+抽象工厂项目搭建 注意:项目经过两次搭建,所以截图中顶级命名空间有ZHH和ZHH2区别,但是架构的内容是一样的,可以将ZHH和ZHH2视为同一命名空间 一:权限管理 二:搜索 |-L ...

  5. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据 ...

  6. MVC+EF三层+抽象工厂项目搭建

    注意:项目经过两次搭建,所以截图中顶级命名空间有ZHH和ZHH2区别,但是架构的内容是一样的,可以将ZHH和ZHH2视为同一命名空间 一:权限管理 二:搜索 |-Lucene.net(速度快)+盘古分 ...

  7. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建

    ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建    ASP.NET MV ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除)...

    ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过滤器的使用和批量删除数据(伪删除和直接删除) 原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(18)-过 ...

  9. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证)...

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(17)-注册用户功能的细节处理(各种验证) ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框 ...

最新文章

  1. ROS知识(4)----初级教程之常见问题汇总
  2. 学java为什么要报java培训班?
  3. Android 马甲包制作流程
  4. 卷进大厂系列之LeetCode刷题笔记:反转链表(简单)
  5. CentOS7 安装 Node.js
  6. 从PHP5.2.x迁移到PHP5.3.x
  7. 自定义语言的实现——解释器模式
  8. 有用的收藏!javascript/c#/asp.net
  9. 打印表单_超市生鲜日常作业表单,打印出来就能用!
  10. Atitit 数据库与存储引擎设计与实现 attilax总结 1.1. 数据库的实现有很多种, 遵循一些理论规范,如 Fix Rules、Write-Ahead Log、Force-log-at-
  11. 虚幻4 配置打包安卓
  12. 前后端分离 获取客户端ip_前后端分离交互
  13. C++ 推箱子小游戏
  14. sap外币重估流程图_SAP外币评估配置及操作OK
  15. Apollo星火计划学习笔记——第一讲 使用Apollo学习自动驾驶
  16. 多租户积分系统功能清单
  17. 数组常用方法总结 (6) :includes / indexOf / lastIndexOf / valueOf / toString / isArray
  18. APP Inventor 基于网络微服务器的即时通信APP
  19. 小型折弯机、芡实剥壳机、煤矿湿喷砂浆搅拌机、桃子去皮机、复摆颚式破碎机、牛头刨床、倒挡拨叉、倾斜式液压式升降平台、液压电梯、立体车库、零件数控编程、车刀刃磨机、变速箱、钢筋弯曲机、换刀机械手……的设计
  20. 中年大叔~手把手教你如何绘制一辆会跑车

热门文章

  1. Oracle数据库用户名密码【转载自百度经验】
  2. jQuery学习-显示与隐藏
  3. 2016022604 - redis命令介绍
  4. 5-5图层的链接-新版本不常用
  5. Kinetic使用注意点--circle
  6. 让secureCRT正确显示中文
  7. 让人少奋斗十年的工作经验
  8. MailMail正式发布!注册码免费发放活动开启!(已结束~~不要再回复咧~)
  9. group by和order by在springboot中连用03
  10. 使命召唤16计算机内存不足,使命召唤16出现一个问题怎么解决